猿问
下载APP

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

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


红颜莎娜
浏览 111回答 2
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.实时系统,反垃圾系统set7.Pub/Sub构建实时消息系统8.构建队列系统使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。9.缓存其实没有固定说那个类型一定用在什么场景,你需要了解redis数据类型的特点,并利用其特点来满足你的场景需要。redis有字符串类型、列表、哈希表(散列表)、集合、有序集合这5种,各有不同。各有特点,列表经常用作队列用作需要保持顺序的场景,散列表可以去除重复值而且可以设置field属性,集合可以去除重复而且支持集合操作适合tag系统以及关注人列表,有序集合在集合基础上增加了排序。

DIEA

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