redis常用的数据类型及应用场景

Redis 基本数据类型及应用场景

一:String是Redis最常见的数据类型

A:常用的字符串操作:
1)set key value:设置一个值;
2)get key:返回key对应的value;
3)strlen key:返回key对应的value字符串长度;
4)append key value:给key对应的value追加值,如果key不存在,相当于set一个新的值;
5)getrange key start stop:返回key对应value的一个子字符串,位置从start到stop;
B:若String内容是数值,则有一下操作
1)incr key:在给定key的value上增加1,并返回增加后的值,redis中的incr是一个原子操作,支持并发;
2)incrby key value:给定key的value上增加value值,并返回增加后的值,相当于key=key.value+value;这也是一个原子操作;
3)decr:在给定key的value上减少1;
4)decrby key value:给定key的value上减少value值;
C:String类型的常见应用场景

1)、缓存功能:字符串最经典的使用场景,redis最为缓存层,Mysql作为储存层,绝大部分请求数据都是在redis中操作,由于redis具有支撑高并发特性,所以缓存通常能起到加速读写和降低 后端压力的作用。

2)、计数器:许多应用都会使用redis作为计数的基础工具,他可以实现快速计数、查询缓存的功能。
如:视频播放数系统就是使用redis作为视频播放数计数的基础组件。

3)、id生成器:我们在使用mysql时,把数据存在mysql后,该数据就会自动生成一个自增长的id,这个id肯定是不重复的,那类似这种生成一个不重复的id也可以用redis的string数据结构来做。

二:List类型是一个双端链表结构,主要功能是put,pop,获取元素等

A:常用的list类型操作
1)lpush key value...:在一个list最前面添加一个或多个元素。
2)rpush key value...:在一个list最后面添加一个或多个元素。
3)llen key:返回指定list的元素个数。
4)lrange key start stop:获取一个list中的指定元素(如果是0,-1则表示从头取到末尾所有元素)
5)ltrim key start stop:裁剪指定list,剩下的内容从start到stop。
6)lpop key :从list最前面弹出一个元素。
7)rpop key:从list最后面弹出一个元素。
8)lindex key index:从list中获取索引为index的元素
B:List常见的应用场景

一个List很典型的应用场景:社区应用
社区应用是一个很广泛的概念,我们平时用的微博,朋友圈,博客,论坛都算是社区应用,社区应用无非就是一些帖子或状态,然后可以给这些帖子或状态回贴或评论,还有就是可以点赞。

示例:1,点赞;(点赞存储的数据肯定不单单是图片,例如还有时间,名称等 这里只是贪图方便而已)
1,创建一条微博内容:set user:1:post:91 “hello world”;
2,点赞:lpush post:91:good “kobe.png”
lpush post:91:good “jordan.png”
lpush post:91:good “James.png”
3,查看有多少人点赞: llen post:91:good
4,查看哪些人点赞:lrange post:91:good 0 -1
思考,如果用数据库实现这个功能,SQL会多复杂??

示例2:回复
1,创建一条微博内容:set user:1:post:92 “oh my lady gaga”
2,回复:lpush post:92:reply “heihei”
lpush post:92:reply “enen”
5,查询微博的回复:lrange post:92:reply 0 -1

三:Set结构和java区别不大,数据都是不可以重复且无序

A:Set类型的操作
    1)sadd key member....:给set添加一个或多个元素
	2)scard key:返回set的元素个数
	3)smembers key:返回指定set内所有的元素,以一个list形式返回
	4)srem key member:从set中移除一个给定元素
	5)sismember key member:判断给定的一个元素是否在set中,如果存在,返回1,如果不存在,返回0
    6)srandmember key count:返回指定set中随机的count个元素
	7)sunion key key....:用key和key....做并集,结果返回一个list;
	8)sdiff key key....:用key和key....做差集,结果返回一个list;
 	9)sinter key key ... :用key和key....做交集,结果返回一list;
	10)sunionstore destination key key ... :获取多个key对应的set之间的并集,并保存为新的key值;目标值也是一个set;
B:Set类型的应用场景

1,去重;
2,抽奖:
1)初始化用户池:
sadd luckdraws ‘user1’ ‘user2’ ‘user3’ ‘user4’ ‘user5’ ‘user6’ ‘user7’ ‘user8’ ‘user9’ ‘user11’ ‘user12’ ‘user13’
2)抽3个三等奖:
srandmember luckdraws 3
srem luckdraws user…
3)抽2个二等奖:
srandmember luckdraws 2
srem luckdraws user…
4)抽1个一等奖:
srandmember luckdraws 1

四:SortedSet每一个添加的值都有一个对应的分数,放进去的值按照该分数升序存在一个集合中

A:SortedSet的常用操作
1)zadd key score member:添加一个带分数的元素,也可以同时添加多个.	
2) zcount key min max :给定范围分数的元素个数:
3) zrank key member :查询指定元素的分数在整个列表中的排名(从0开始)
4)zrange key start stop:获取集合中指定范围的元素,按分数升序排序输出
5)zrevrange key start stop:获取集合中指定范围的元素,按分数降序排序输出
6)zincrby key score member:给指定的元素增加指定的分数
7) zrem key member:移除指定的元素
B:SortedSet应用场景

按照点击量排行:
1)、初始化数据:
zadd post:good:sort 1000 post:91 1020 post:92
2)、首页推荐10个最热门的帖子
zrevrange post:good:sort 0 10
3), 给id为91的贴在增加30个点赞
zincrby post:good:sort 30 post:91
4)、从帖子点击量排行榜中移除id为91的帖子
zrem post:good:sort post:91

五:Hash 用来存对象(key,Map<key,value>)

A:Hash的常用操作
1),hset key field value:给一个hashes添加一个field和value;
2),hget key field:可以得到一个hashes中的某一个属性的值:
3),hgetall key:一次性取出一个hashes中所有的field和value,使用list输出,一个field,一个value有序输出;
4),hmset key field1 value1 field2 value2 field3 value3...:一次性的设置多个值(hashes multiple set)
5),hmget key field1 field2...:一次性的得到多个字段值(hashes multiple get),以列表形式返回;
6,hincrby key field number:给hashes的一个field的value增加一个值(integer),这个增加操作是原子操作:
7,hkeys key:得到一个key的所有fields字段,以list返回:
8,hdel key fieldh:删除hashes一个指定的filed;
B:应用场景
1,hashes使用场景:替代string,以更合理的方式保存对象;

总结

把Redis常用的数据类型命令做了一个简单的整合,不好的望各路大神指点一二…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值