上饶商城网站建设手机app在哪里找
一、Redis的数据结构

二、String 数据结构
2.1 字符串常用操作
//存入字符串键值对
SET  key  value  
//批量存储字符串键值对           
MSET  key  value [key value ...]     
//存入一个不存在的字符串键值对
SETNX  key  value 
//获取一个字符串键值        
GET  key      
//批量获取字符串键值       
MGET  key  [key ...]       
//删除一个键  
DEL  key  [key ...]     
//设置一个键的过期时间(秒)    
EXPIRE  key  seconds         
 
原子加减
INCR  key             //将key中储存的数字值加1
DECR  key             //将key中储存的数字值减1
INCRBY  key  increment         //将key所储存的值加上increment
DECRBY  key  decrement        //将key所储存的值减去decrement
 
单值存储
SET  key  value     
GET  key
 
对象缓存
SET  user:1  value(json格式数据)MSET  user:1:name  zhuge   user:1:balance  1888
MGET  user:1:name   user:1:balance 
 
2.2 应用场景
分布式锁
SETNX  product:10001  true         //返回1代表获取锁成功
SETNX  product:10001  true         //返回0代表获取锁失败
。。。执行业务操作
DEL  product:10001            //执行完业务释放锁
SET product:10001 true  ex  10  nx    //防止程序意外终止导致死锁
 
文章阅读量
INCR article:readcount:{文章id}      
GET article:readcount:{文章id}
 
通过计数器方式实现某个文章的阅读数
存在的问题
注意:万级以上的QPS,会导致一瞬间CPU 100%

三、Hash 数据结构
3.1 Hash常用操作
存储一个哈希表key的键值
HSET  key  field  value             
 
如何哈希表中key的键值 不存在,则执行set
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
HINCRBY  key  field  increment        
 
对象缓存
HMSET  user  {userId}:name  zhuge  {userId}:balance  1888
HMSET  user  1:name  zhuge  1:balance  1888HMGET  user  1:name  1:balance
 

3.2 HASH应用场景
HSET  key field value;
 
电商购物车
- 以用户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
 
四、List数据结构
4.1 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     
 

4.2 用List可以实现的数据结构
Stack(栈) = LPUSH + LPOP
Queue(队列)= LPUSH + RPOP
Blocking MQ(阻塞队列)= LPUSH + BRPOP
 
4.3 List 应用场景
微博消息和微信公号消息
数据量小场景
 诸葛老师关注了MacTalk,备胎说车等大V
 1)MacTalk发微博,消息ID为10018
LPUSH  msg:{诸葛老师-ID}  10018
 
2)备胎说车发微博,消息ID为10086
LPUSH  msg:{诸葛老师-ID} 10086
 
3)查看最新微博消息
LRANGE  msg:{诸葛老师-ID}  0  4
