redis各种数据类型分别在什么情况下使用
1个回答
展开全部
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系统以及关注人列表,有序集合在集合基础上增加了排序。
•使用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系统以及关注人列表,有序集合在集合基础上增加了排序。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询