Home > Database > Mysql Tutorial > 我目前使用redis的方式

我目前使用redis的方式

WBOY
Release: 2016-06-07 16:34:43
Original
877 people have browsed it

1.将redis的List用作队列,这个很轻量级,不用引入别的队列服务器,缺点是可能会丢失数据,因为其持久化方案是redis通用的aof或者rdb方式 2.将排好序的实体id放到LIST中,然后以prefix 实体id为key,用hashtable存储具体的实体信息 3.用ZSET存储排名和带有权

1.将redis的List用作队列,这个很轻量级,不用引入别的队列服务器,缺点是可能会丢失数据,因为其持久化方案是redis通用的aof或者rdb方式

2.将排好序的实体id放到LIST中,然后以prefix 实体id为key,用hashtable存储具体的实体信息

3.用ZSET存储排名和带有权重信息的一些实体id,缺点是内存占用太厉害了。

4.用hashtable做一些映射,例如username=>user_id等

5.set可以支持一些逻辑操作,但是排序的时间复杂度不佳,所以我选择了用list

6.set用来做唯一性验证,如果验证某个用户是否已经对某篇文章进行了赞的操作

7.使用redis用来优化内存hash-max-zipmap-entries等参数减少内存使用量

8.排序好的id也可以用string的getRange和setRange命令来实现顺序访问

用LIST不好的是其顺序已经确定,其删除操作耗时O(n),顺序查找并删除,而且不支持union inter等操作,这些操作可以模拟and 和or这两种关系操作。

暂时能想起的也就这么多了

主要的关注点是要自己建立索引,索引是对key的索引,然后通过key访问到value。这样就把访问简化为k=>v操作。复杂的sql都可以分解为redis的一些操作。

我能想到的应用场景:

高级缓存

计数器

布隆过滤器/简单权限(bit操作类型)

栈/队列/有优先权队列

锁/id generator缓存/短url缓存

SNS关系

mapreduce/漂流瓶/去重

timeline

索引/排行榜/最近N个

超时(比如验证)

聊天/订阅/notify

Session

通信中间件

原文出处:http://www.imsiren.com/archives/982
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template