Redis的基本命令以及简单使用场景

Redis的五种核心数据结构

String List Hash Set Zset

String结构

字符串常用操作

1.set key value --存入字符串键值对
2.MSET key value [key value...] --存入多个字符串键值对 例如 set key value key1 value1 key2 value2
3.SETNX key value --存入一个不存在的字符串键值对
4.get key --获取一个字符串键值
5.mget key key1 key2 key3... --获取多个字符串的键值
6.del key --删除一个键
7.EXPIRE key seconds ---设置一个键的超时时间

原子加减

INCR key --将key中存储的值+1
DECR key --将key中存储的值-1
INCRBY key increment --将key中存储的值+increment 例如set a 1;incrby a 4 结果为5
DECRBY key decrement --将key中存储的值-decrement 例如 set a 4;decrby a 2结果为2

string的应用场

1.单值缓存 set key value; get key
2.对象缓存 set user:1 value(json数据);mset user:1:name shen user:1:balance 1888;mget user:1:name user:1:balance
3.分布式锁:setnx product:1001 true//返回1代表加锁成功 返回0代表加锁失败 del product:1001 //执行完业务释放锁 setproduct:1001 true ex 10 nx //放置程序以外终止导致死锁
4.计数器 incr article:readcount:{id} get article:readcount:{id}
5.web集群session共享 spring session +redis实现session共享
6.分布式系统全局序列号 incrby orderId 1000 //redis批量生产序列号提升性能

Hash结构

Hash常用操作

1.Hset key field value --存储一个哈希表key的键值 例如:hset a 5 bbb
2.Hsetnx key field value ---储存一个不存在的哈希表key的键值
3.HMset key field value key1 field1 value2 --在一个哈希表zkey中存储多个键值
4.Hget key field --获取哈希表key对应的field键值
5.Hdel key field --删除哈希表key中field的键值
6.HLen key --返回哈希表key中field的数量
7.hgetall key --返回哈希表可以中所有的键值
8.HINCRBY key field increment --为哈希表key中的firld的值加上增量increment

Hash应用场景

1.对象缓存 Hmset user {userld}:name shen {userld}:balance 1888
2.电商购物车 用户id为key 商品id为field 商品数量为value
3.购物车操作:添加商品->hset cart:1001 10088 1;添加数量->hincrby cart:1001 10088 1;商品总数->hlen cart:1001;删除商品->hdel cart:1001 10088;获取购物车所有商品->hgetall cart:1001

Hash结构的优缺点

1.优点:同类数据会累整合储存,方便数据管理;相比string操作消耗内存与cpu更小;相比string操作更省空间
2.缺点:过期更能不能使用field上,只能用在key上;redis集群架构下不适合大规模使用

List结构

List常用操作

1.LPUSH key value value1 value2 ---将一个或多个value插入到key列表的表头(最左边)
2.RPUSH key value value1 value2 ---将一个或多个value插入到key列表的表尾(最右边)
3.Lpop key ---移除并返回key列表的头元素
4.Rpop key --移除并返回key列表的尾元素
5.lrange key start stop ---返回列表key中指定区间内的元素,区间以偏移量start和stop指定 例如:lrange a 0 1表示去[0,1]区间里的数据
6.blpop key key2 key3 timout ---从key列表表头弹出一个元素,若列表中没有元素阻塞等待timeout秒,如果timeout=0,一直阻塞等待
7.brpop key key2 key3 timeout ---从key列表表尾弹出一个元素,若列表中没有元素阻塞等待timeout秒,如果timeout=0,一直阻塞等待

List应用场景

1.常用数据结构:Stack(栈)=LPUSH+LPOP Queue(队列)=LPUSH+RPOP Blocking MQ(阻塞队列)=LPUSH+BRPOP
2.微博和微信公众号消息流 发微博:LPUSH msg:{ID} 10088 ; LPUSH msg:{ID} 10089 查看微博消息lrange msg:{ID} 0 4

Set结构

set常用操作

1.SADD key member member1 member2 ---往集合key中存入元素,元素存在则忽略,若key不存在则新建
2.SREM key member member1 member2 ----从集合key中删除元素
3.SMEMBERS key ---获取集合key中所有的元素
4.scard key ---获取集合key的元素个数
5.sismember key member ---判断member元素是否存在集合key中
6.srandmember key [count] ---从集合key中选出count个元素,元素不从key中删除
7.spop key [count] ---从集合key中选出count个元素,元素从key中删除Set

Set运算操作

1.Sinter key key1 key2 ----交集运算 例如:sadd a 1 2 3 4 5; sadd b 4 5 6 7 8; sinter a b结果为4,5 2.sinterstore destination key key1 key2 ---将交集结果存入新集合destination中
3.sunion key key1 key2 ----并集运算
4.sunionstore destination key key1 key2 ----将并集结果存入新集合destination中
5.sidff key key1 key2 --- 差集运算并返回key里的元素
6.sdiffstore destination key key1 key2 ---将差集结果存入新的结合destination中

Set应用场景

1.微信抽奖小程序:点击抽奖加入集合 sadd key {userID} 查看参与抽奖所有用户 Smembers key 抽取count名中奖者 srendmember key [count]/Spop key [count]
2.微信微博点赞,收藏,标签:点赞Sadd like:{消息ID} {用户ID} 取消点赞:Srem like:{消息ID} {用户ID} 检查用户是否点赞过:sismembers like:{消息ID} {用户ID} 获取点赞的用户列表 smembers like:{消息ID} 获取点赞用户数:SCARD like:{消息ID}
3.集合操作:实现微博微信关注模型

Zset有序集合结构

Zse常用操作

1.zadd key score member[{score member}] ---往有序集合key中加入带分值元素
2.zrem key member member1 ... ---从有序集合key中删除元素
3.zscore key member ---返回有序集合key中元素的分值
4.zincrby key increment member ---为有序集合key中元素member的分值加上incremember 5.zcard key ---返回有序集合key中元素个数
6.zrange key start stop [withscores] ---正序获取有序集合key从start下标到stop下标的元素 7.zrevrange key start stop [wuithscores] ---倒叙获取有序集合key从start下标到stop下标的元素

zset集合操作

zunionstore destkey numkeys key key1 key2 ----并集计算(key相同value不同,value会相加) zinterstore destkey numkeys key key1 key2 ----交集计算(key相同value不同,value会相加)

zset应用场景

1.点击新闻事件: ZINCRBY 新闻时间id  点击次数  事件名称
2.展示排名前十:ZREVRANGE 新闻id 0 9 withscores
3.七日搜索榜单计算:zunionstore 榜单id1-7 7 id1 id2 ....id7
4.展示七日排行前十:zrevrange 榜单id1-7  0 9 withscores

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值