Redis数据结构&常用命令
2021-02-04 17:18:23   1  举报             
     
         
 AI智能生成
  Redis数据结构&常用命令
    作者其他创作
 大纲/内容
  字符串-string
    
     命令    
     全局命令
    
     选择数据库 select dbindex 默认16个数据库:0-15 默认是0库
  
     清除数据库 flusdb 清除当前数据库/flushall清除所有数据库
  
     重命名  rename key newkey  renamenx key newkey 只有newkey不存在时才会被覆盖  
     检查键是否存在  exists key 存在返回1,不存在返回0  
     批量存入字符串键值对 mset key value key value [key value]
  
     dbsize 查询键总数,直接获取redis内置的键总数变量  
     keys * 查询所有的键,会遍历所有的键值  
     原子加减常用命令
    
     key中存储的数值+1 incr key 
  
     key中存储的数值-1 decr key   
     key中存储的数值加上一个值[数字] incrby key increment
  
     key中存储的数值减去一个值[数字]  decrby key increment  
     字符串常用操作命令    
     设置字符串键值对 set key value
  
     获取键值对值 get key
  
     删除键值对 del key
  
     设置一个过期的时间 expire key seconds
  
     批量存入字符串键值对 mset key value key value [key value]
  
     设置一个不存在的键值对(已存在的键值对设置返回0-失败) setnx key value
  
     批量获取字符串键值 (不存在的key返回nil )mget key[key] 
  
     应用场景    
     单值缓存    
     设置值:set key value 获取值:get  key
  
     对象缓存    
     设置值:set user:1001 value(json格式数据) 获取值:get key
  
     设置值:mset  user:1:name  zhuge   user:1:balance  1888 获取值:keys user:1*
     
      
     分布式锁    
     setnx product:10001  true 		//返回1代表获取锁成功
setnx product:10001 true //返回0代表获取锁失败
TODO 执行业务操作
del product:10001 //执行完业务释放锁
set product:10001 true ex 10 nx //防止程序意外终止导致死锁
    setnx product:10001 true //返回0代表获取锁失败
TODO 执行业务操作
del product:10001 //执行完业务释放锁
set product:10001 true ex 10 nx //防止程序意外终止导致死锁
 计数器    
     文章阅读量 INCR article:readcount:{文章id}    GET article:readcount:{文章id}     
      
     web集群session共享    
     spring session + redis实现session共享  
     分布式系统全局序列号-不推荐  
     哈希-hash    
     常用命令    
     存储一个哈希表key的键值 hset key field value
  
     存储一个不存在的哈希表key的键值 hsetnx key  field  value    
     在一个哈希表key中存储多个键值对 hmset  key  field  value [field value ...]  
     获取哈希表key对应的field键值 hget key  field  
     批量获取哈希表key中多个field键值 hmget key  field  [field ...]   
     删除哈希表key中的field键值 hdel  key  field  [field ...]  
     返回哈希表key中field的数量 hlen  key   
     返回哈希表key中所有的键值 hgetall key  
     哈希表key中field键的值加上增量increment  hincby key  field  increment  
     获取所有的field hkeys key
  
     获取所有的value hvals key
  
     获取所有的field&value hgetall key
  
     应用场景    
     对象缓存
  
     购物车    
     设计    
     以用户id为key
  
     商品id为field  
     商品数量为value  
     具体操作    
     添加商品 hset cart:1001 10088 1  
     增加数量 hincrby cart:1001 10088 1  
     商品总数 hlen cart:1001
  
     删除商品 hdel cart:1001 10088
  
     获取购物车所有商品 hgetall cart:1001  
     优缺点
    
     优点    
     同类数据归类整合储存,方便数据管理  
     相比string操作消耗内存与cpu更小
  
     相比string储存更节省空间
  
     缺点    
     过期功能不能使用在field上,只能用在key上
  
     Redis集群架构下不适合大规模使用  
     列表-list    
     常用命令    
     将一个或多个值value插入到key列表的表头(最左边) LPUSH  key  value [value ...]   
      将一个或多个值value插入到key列表的表尾(最右边) RPUSH key value [value ...]  
     移除并返回key列表的头元素 LPOP  key  
     移除并返回key列表的尾元素 RPOP  key  
     返回列表key中指定区间内的元素,区间以偏移量start和stop指定 LRANGE  key  start  stop  
     从key列表表头弹出一个元素,若列表中没有元素,阻塞等待					timeout秒,如果timeout=0,一直阻塞等待 BLPOP  key  [key ...]  timeout  
     从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待					timeout秒,如果timeout=0,一直阻塞等待 BRPOP  key  [key ...]  timeout   
     应用场景  
     集合-set    
     常用命令    
     往集合key中存入元素,元素存在则忽略,若key不存在则新建 sadd key member  [member ...]  
     从集合key中删除元素 srem key  member  [member ...]  
     获取集合key中所有元素 smembers key 
  
     获取集合key的元素个数 scard key
  
     判断member元素是否存在于集合key中 sismember key menber
  
     判断member元素是否存在于集合key中  
     从集合key中选出count个元素,元素不从key中删除 srandmember key [count]
  
     从集合key中选出count个元素,元素从key中删除 spop key [count]
  
     运算命令
    
     交集运算SINTER  key  [key ...]   
     将交集结果存入新集合destination中 SINTERSTORE  destination  key  [key ..]  
     并集运算 SUNION  key  [key ..]  
     将并集结果存入新集合destination中 SUNIONSTORE  destination  key  [key ...]  
     差集运算 SDIFF  key  [key ...]   
     将差集结果存入新集合destination中 SDIFFSTORE  destination  key  [key ...]  
     应用场景    
     微信抽奖小程序
    
     点击参与抽奖加入集合 sadd key {userID}
  
     查看参与抽奖所有用户 smenbers key
  
     抽取count名中奖者 srandmember key [count]或者spop key [count]
  
     微信微博点赞,收藏,标签    
     点赞 - SADD  like:{消息ID}  {用户ID}
  
     取消点赞 - SREM like:{消息ID}  {用户ID}  
     检查用户是否点过赞 - SISMEMBER  like:{消息ID}  {用户ID}
  
     获取点赞的用户列表 - SMEMBERS like:{消息ID}
  
     获取点赞用户数 - SCARD like:{消息ID}
   
     集合操作实现微博微信关注模型    
     1) 诸葛老师关注的人: 
zhugeSet-> {guojia, xushu}
2) 杨过老师关注的人:
yangguoSet--> {zhuge, baiqi, guojia, xushu}
3) 郭嘉老师关注的人:
guojiaSet-> {zhuge, yangguo, baiqi, xushu, xunyu)
4) 我和杨过老师共同关注:
SINTER zhugeSet yangguoSet--> {guojia, xushu}
5) 我关注的人也关注他(杨过老师):
SISMEMBER guojiaSet yangguo
SISMEMBER xushuSet yangguo
6) 我可能认识的人:
SDIFF yangguoSet zhugeSet->(zhuge, baiqi}
     
      
    zhugeSet-> {guojia, xushu}
2) 杨过老师关注的人:
yangguoSet--> {zhuge, baiqi, guojia, xushu}
3) 郭嘉老师关注的人:
guojiaSet-> {zhuge, yangguo, baiqi, xushu, xunyu)
4) 我和杨过老师共同关注:
SINTER zhugeSet yangguoSet--> {guojia, xushu}
5) 我关注的人也关注他(杨过老师):
SISMEMBER guojiaSet yangguo
SISMEMBER xushuSet yangguo
6) 我可能认识的人:
SDIFF yangguoSet zhugeSet->(zhuge, baiqi}
 集合操作实现电商商品筛选    
     SADD  brand:huawei  P40
SADD brand:xiaomi mi-10
SADD brand:iPhone iphone12
SADD os:android P40 mi-10
SADD cpu:brand:intel P40 mi-10
SADD ram:8G P40 mi-10 iphone12
SINTER os:android cpu:brand:intel ram:8G {P40,mi-10} 
      
    SADD brand:xiaomi mi-10
SADD brand:iPhone iphone12
SADD os:android P40 mi-10
SADD cpu:brand:intel P40 mi-10
SADD ram:8G P40 mi-10 iphone12
SINTER os:android cpu:brand:intel ram:8G {P40,mi-10}
 有序集合-zset
    
     常用命令    
     往有序集合key中加入带分值元素 ZADD key score member [[score member]…]  
     从有序集合key中删除元素 ZREM key member [member …]  
     返回有序集合key中元素member的分值 ZSCORE key member  
     为有序集合key中元素member的分值加上increment  ZINCRBY key increment member  
     返回有序集合key中元素个数  ZCARD key  
     正序获取有序集合key从start下标到stop下标的元素 ZRANGE key start stop [WITHSCORES]  
     倒序获取有序集合key从start下标到stop下标的元素 ZREVRANGE key start stop [WITHSCORES]  
     并集计算 ZUNIONSTORE destkey numkeys key [key ...]  
     交集计算 ZINTERSTORE destkey numkeys key [key …]  
     应用场景    
     实现排行榜
    
     1)点击新闻
ZINCRBY hotNews:20190819 1 守护香港
2)展示当日排行前十
ZREVRANGE hotNews:20190819 0 9 WITHSCORES
3)七日搜索榜单计算
ZUNIONSTORE hotNews:20190813-20190819 7
hotNews:20190813 hotNews:20190814... hotNews:20190819
4)展示七日排行前十
ZREVRANGE hotNews:20190813-20190819 0 9 WITHSCORES
     
      
    ZINCRBY hotNews:20190819 1 守护香港
2)展示当日排行前十
ZREVRANGE hotNews:20190819 0 9 WITHSCORES
3)七日搜索榜单计算
ZUNIONSTORE hotNews:20190813-20190819 7
hotNews:20190813 hotNews:20190814... hotNews:20190819
4)展示七日排行前十
ZREVRANGE hotNews:20190813-20190819 0 9 WITHSCORES
 
    收藏 
     
 
 
 
 
  0 条评论
 下一页
  
  
  
  
  
  
  
  
  
  
  
 