SETkeyvalue//存入字符串键值对MSETkeyvalue[keyvalue...]//批量存储字符串键值对SETNXkeyvalue//存入一个不存在的字符串键值对GETkey//获取一个字符串键值MGETkey[key...]//批量获取字符串键值DELkey[key...]//删除一个键EXPIREkeyseconds//设置一个键的过期时间(秒)原子加减
INCRkey//将key中储存的数字值加1DECRkey//将key中储存的数字值减1INCRBYkeyincrement//将key所储存的值加上incrementDECRBYkeydecrement//将key所储存的值减去decrementString应用场景单值缓存对象缓存分布式锁计数器Web集群Session共享分布式系统全局序列号单值缓存
SETkeyvalueGetkey对象缓存
SETuser:1value(json格式数据)MSETuser:1:nameyijiaoqianuser:1:balanceMGETuser:1:nameuser:1:balance分布式锁
SETNXproduct:true//返回1代表获取锁成功SETNXproduct:true//返回0代表获取锁失败...执行业务操作...DELproduct://执行完业务释放锁SETproduct:trueex10nx//防止程序意外终止导致死锁计数器
INCRarticle:readcount:{文章id}GETarticle:readcount:{文章id}Web集群Session共享
Springsession+redis实现sessio共享
分布式系统全局序列号INCRBYorderId//redis批量生成序列号提升性能Hash结构Hash常用操作
HSETkeyfieldvalue//存储一个哈希表key的键值HSETNXkeyfieldvalue//存储一个不存在的哈希表key的键值HMSETkeyfieldvalue[fieldvalue...]//在一个哈希表key中存储多个键值对HGETkeyfield//获取哈希表key对应的field键值HMGETkeyfield[field...]//批量获取哈希表key中多个field键值HDELkeyfield[field...]//删除哈希表key中的field键值HLENkey//返回哈希表key中field的数量HGETALLkey//返回哈希表key中所有的键值HINCRBYkeyfieldincrement//为哈希表key中field键的值加上增量incrementHash应用场景对象存储
HMSETuser{userId}:nameyijiaoqian{userId}:balanceHMSETuser1:nameyijiaoqian1:balanceHMGETuser1:name1:balance电商购物车以用户id为key商品id为field商品数量为value
购物车操作:
添加商品:hsetcart:增加数量:hincrbycart:商品总数:hlencart:删除商品:hdelcart:10088获取购物车所有商品:hgetallcart:Hash结构优缺点优点:
同类数据归类整合储存,方便数据管理相比string操作消耗内存与cpu更小相比string储存更节省空间缺点:
过期功能不能使用在field上,只能用在key上Redis集群架构下不适合大规模使用List结构List常用操作LPUSHkeyvalue[value...]//将一个或多个值value插入到key列表的表头(最左边)RPUSHkeyvalue[value...]//将一个或多个值value插入到key列表的表尾(最右边)LPOPkey//移除并返回key列表的头元素RPOPkey//移除并返回key列表的尾元素LRANGEkeystartstop//返回列表key中指定区间内的元素,区间以偏移量start和stop指定BLPOPkey[key...]timeout//从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待BRPOPkey[key...]timeout//从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待List应用场景常用数据结构:Stack(栈)=LPUSH+LPOP(FILO)Queue(队列)=LPUSH+RPOP(FIFO)BlockingMQ(阻塞队列)=LPUSH+BRPOP微博和