黑马程序员技术交流社区

标题: 【杭州校区】Redis 5种基本数据类型简介 [打印本页]

作者: 小江哥    时间: 2019-10-21 15:02
标题: 【杭州校区】Redis 5种基本数据类型简介
本帖最后由 小江哥 于 2019-10-21 15:02 编辑

一. 是什么
简述:
Redis是一个完全免费开源的,基于内存的高性能key-value存储系统,可以用作数据库、缓存和消息中间件。支持多种类型的数据结构. Redis内置数据持久化、LRU驱动事件、事物、主从复制、哨兵机制、集群、自动分区、lua脚本提供高可用性.
特点:
架构:
二. 什么时候用
使用场景
三. 为什么要用
主流NoSQL对比
四. 怎么用
五种数据类型常用命令:
    1. string类型
[Bash shell] 纯文本查看 复制代码
set key value # 设置指定key的值
get key      # 获取指定key的值
del key      # 删除指定key的值
incr key     # key自增1,如果key不存在,自增后get(key)=1
decr key     # key自减1,如果key不存在,自减后get(key)=-1
incrby key k # key自增k,如果key不存在,自增后get(key)=k
decrby key k # key自减k,如果key不存在,自减后get(key)=-k
set key value # 不管key是否存在,都设置
setnx key value # key不存在,才设置
set key value xx # key存在,才设置
mget key1 key2 key3 # 批量获取key,原子操作
mset key1 value1 key2 value2 # 批量设置key-value
getset key newvalue # set key newvalue并返回旧的value
append key value # 将value追加到旧的value
    2. hash类型
[Bash shell] 纯文本查看 复制代码
hget key field    # 获取hash key对应的field的value
hset key field value # 设置hash key对应field的value
hdel key field  # 删除hash key对应field的value
hexists key field # 判断hash key是否有field
hlen key # 获取hash key field的数量
hmget key field1 field2 ... fieldN # 批量获取hash key的一批field对应的值
hmset key field1 value1 field2 value2 ... fieldN valueN # 批量设置hash key的一批field value
hgetall key # 返回hash key对应所有的field和value
hvals key   # 返回hash key对应所有filed的value
hkeys key   # 返回hash key对应所有field
    3. list类型
[Bash shell] 纯文本查看 复制代码
rpush key value1 value2 ... valueN # 从列表右端插入值
lpush key value1 value2 ... valueN # 从列表左端插入值
linsert key before|after value newValue # 在list指定的值前|后插入newValue
lpop key # 从列表左侧弹出一个item
rpop    # 从列表右侧弹出一个item
lrem key count value   
# 根据count值,从列表中删除所有value相等的项
#(1)count>0,从左到右,删除最多count个value相等的项
# (2)count<0,从右到左,删除最多Math.abs(count)个value相等项
# (3)count=0,删除所有value相等的项
ltrim key start end # 按照索引范围修剪列表
lrange key start end(包含end) # 获取列表指定索引范围所有item
lindex key index # 获取列表指定索引的item
llen key # 获取列表长度
lset key index newValue # 设置列表指定索引值为newValue
blpop key timeout # lpop阻塞版本,timeout是阻塞超时时间
brpop key timeout # rpop阻塞版本,timeout是阻塞超时时间
    #(如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止)
        
扩展应用:
    1、LRUSH + LPOP = Stack  栈:先进后出
    2、LPUSH + RPOP = Queue  队列:先进先出
    3、LPUSH + BRPOP = Message Queue  消息队列
    4. set类型
[Bash shell] 纯文本查看 复制代码
sadd key element  # 向集合key添加element
                 # 如果element已经存在,添加失败
srem key element  # 将集合key中的element移除掉
scard key # 计算集合大小
sismember key element # 判断element是否在集合中
srandmember key count # 从集合中随机挑选count个元素
spop key # 从集合中随机弹出一个元素
smove source-key dest-key item #将元素item从source-key移除添加进dest-key
smembers key # 获取集合所有元素
sdiff key1 key2  # 差集
sdiffstore dest-key key-name # 差集结果存入新集合
sinter key1 key2 # 交集
sinterstore dest-key key-name # 交集结果存入新集合
sunion key1 key2 # 并集
sunionstore dest-key key-name # 并差集结果存入新集合
    5. zset类型
[Bash shell] 纯文本查看 复制代码
zadd key score element(可以是多对)# 添加score和element
zrem key element(可以是多个) # 删除元素
zscore key element # 返回元素的分数
zcount key min max # 返回分值介于min和max之间的成员数量
zincrby key increScore element # 增加或减少元素的分数
zcard key # 返回元素的总个数
zrange key start end  s# 返回指定索引范围内的升序元素【分值】
zrangebyscore key minScore maxScore  # 返回指定分数范围内的升序元素【分值】
zremrangebyrank key start end  # 删除指定排名内的升序元素
zremrangebyscore key minScore maxScore # 删除指定分数内的升序元素





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2