Redis浅显的使用
来源:互联网 发布:表情制作软件 编辑:程序博客网 时间:2024/05/18 10:43
Redis,在好多项目场景中帮助我们。
老生常谈,Redis与memcache的区别
1. Redis中,并不是所有的数据都一直存储在内存中的,这是相比memcache的最大区别之一。
2. Redis不仅仅支持简单的k/v类型的数据,还提供list、set、hash等数据结构的存储。相比而言更具数据库特征。
3. Redis支持数据的备份,即master-slave模式的数据备份。
4. Redis支持数据的持久化,可将内存中的数据保持在磁盘中,重启的时候可以再次加重重新使用。
5. 过期策略 memcache在set时指定,redis可通过expire指定
6. Memcache可以缓存图片、视频等。
7. Redis只使用单核,memcache可使用多核。存小数据redis性能更高,100k以上数据memcache性能更高。无论选哪个,qps都不会成为瓶颈。
Redis 安装 + Sentinel配置主从
[root@bx_2_35 src]# cp -pf redis-cli /usr/local/bin
Redis除了可以当做Key-Value型的NoSql数据库外,同时由于它支持List数据结构,完全可以实现轻量级的消息服务。
个人在项目中使用的几个简单应用场景是:
1. 将新增加的奖品不时lpush到奖品队列中,用户符合中奖规则,rpop出来该奖品。简单的生产者消费者队列。
2. 用户播放历史记录。
生产者:
播放影片,前端Http轮询上报当前用户(user)、影片(film)、播放时长(time)。放入生产者队列。由于用户量较多,分配了5个队列。按照user hashcode除以5取余,分配该记录到指定的队列中。按user哈希的好处是同一个用户的不同记录肯定会落到唯一特定的队列中。若落入不同的队列,可能两个队列处理不是按上传的先后顺序,先上传的可能会把后上传的覆盖掉。
String key = "film-history-q-" + (user.hashCode() % 5);Long beforeLen = redisUtils.lLen(key); if (beforeLen < 50000) { StringBuffer sb = new StringBuffer(user); sb.append("|").append(film).append("|").append(video).append("|").append(time); Long afterLen = redisUtils.lPush(key, sb.toString()); if (afterLen > 0) { return true; } }
此处限制beforeLen < 50000是为了防止生产者队列无限增大。超过这个限定,我们认为很可能消费者挂掉了。另外未考虑更高的伸缩性: 如果5个队列也不够用,业务要求严格的话要考虑一致性哈希了。
消费者:
构建5个消费者Worker,分别 对5个队列进行消费,调用上报播放记录接口。期间我们可以做一些合并相同用户同一影片播放记录的策略,减少上报播放记录接口次数。
最后推荐一篇还不错的文章 http://www.cnblogs.com/si812cn/p/4042992.html
以及Redis命令参考 http://redisdoc.com/
- Redis浅显的使用
- RAC的浅显使用
- Oracle高级函数使用的浅显介绍
- listView使用及优化的浅显理解
- Fortify SCA的一些浅显使用
- Git浅显使用
- 对Binder的浅显分析及AIDL的使用
- storm用来做实时日志分析的浅显使用
- 常用的8种设计模式使用场景,浅显易懂
- 三层的浅显分析
- UITableView 的浅显理解
- jamvm的浅显认识
- 浅显的道理都不明白~
- 浅显易懂的经济学常识
- SVN的一些浅显看法
- 线程池的浅显分析
- ThreadLocal的直观浅显理解
- 浅显易懂的Git教程
- hd2074 叠筐
- hdu2648 map应用
- DEPENDS工具和DUMPBIN工具使用
- 亲测好用,保存 myeclipse反编译插件安装
- 城市电话号码
- Redis浅显的使用
- ZIGBee组网流程
- Eclipse中运行MapReduce程序时控制台无法打印进度信息的问题
- ContextLoaderListener作用详解
- iOS 基础 - UIView
- 解决 LoadLibraryExA 、 LoadLibrary 参数错误 GetLastError()值87
- EALayout 第二节 多控件依赖布局
- HDU 4501
- hdu 5311 Hidden String dp o(n)算法 深搜