为了账号安全,请及时绑定邮箱和手机立即绑定

redis各种数据类型分别在什么情况下使用

/ 猿问

redis各种数据类型分别在什么情况下使用

红颜莎娜 2019-03-13 14:09:11

redis各种数据类型分别在什么情况下使用


查看完整描述

2 回答

?
元芳怎么了

1.取最新N个数据的操作
•使用LPUSH latest.comments<ID>命令,向list集合中插入数据

•插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID

•然后我们在客户端获取某一页评论时可以用下面的伪代码 redis.lrange("latest.comments",start,start+num_items-1)

ps:如果输入无序则可以使用sorted set用时间作为score,然后lrangebyscore分页读取,按时间排序

2.排行榜应用,取TOP n操作
将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。

3.需要精准设定过期时间的应用
比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了

4.计数器应用
INCR,DECR命令

5.Uniq操作,获取某段时间所有数据排重值
使用Redis的set数据结构

6.实时系统,反垃圾系统
set

7.Pub/Sub构建实时消息系统
8.构建队列系统
使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。

9.缓存

其实没有固定说那个类型一定用在什么场景,你需要了解redis数据类型的特点,并利用其特点来满足你的场景需要。
redis有字符串类型、列表、哈希表(散列表)、集合、有序集合这5种,各有不同。各有特点,列表经常用作队列用作需要保持顺序的场景,散列表可以去除重复值而且可以设置field属性,集合可以去除重复而且支持集合操作适合tag系统以及关注人列表,有序集合在集合基础上增加了排序。



查看完整回答
反对 回复 2019-03-19
?
DIEA

常见的说法是,有N多热点数据,又是临时用一下,又想提高并发速度,吞吐量,那就可以考虑,如淘宝的节假日的销售活动。提前把数据准备好,活动完后失效。
我的看法,有足够多的内存,我又想让系统极快。就可以把redis当数据库用,redis可以永久缓存数据,但是这些数据要小于能使用的内存量。小点的项目比较适合,我干过这事。
接口级别缓存一定量网络请求数据,省去自己设计的缓存不安全,不完善的麻烦。比如开发微网站:要缓存的微信的认证串,用户认证数据。cookie,session等。我同样干过这事,跟第二段一起做的。前提是数据量适中,现有机器配置,可以5年以上不出问题。
还有人会结合mysql或oracle使用,缓存用户查询的数据。对小项目我个人以为没必要的。大项目功能如第一点。在小项目中,mysql或oracle自己就可以把所有的表、数据等直接加载到内存中。数据预热后,访问效率一点不差。秒以内可以从2000W以上的数据中找出REGEXP写的查询。我同样也干过这事。多线程+mysql全部加载到内存+查询结果合并不会超过1秒。2秒以内把查询结果展现出来。
总之redis不是大项目的专利,看你能想到什么地方,就能用到什么地方。使用redis的根本出发点是快+高并发。

查看完整回答
反对 回复 2019-03-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信