2016-05-30 17:00
新大楼903
肖艳杰
Hash类型
类似于.NET中的Dictionary
field和value的映射表
特别适合用于存储对象
扩展阅读:
哈希表(碰撞,复杂度)
Hash的常见操作:
HSET/HGET/HDEL/HEXISTS
基于Hash的自增自减 HINCRBY
批量操作:HMSET/HMGET
注意批量操作的数据量,太大的话是会造成堵塞的。
HKEYS/HSCAN
Hash常见问题:
- 和List一样的回收问题,当Redis回收时,是整个Hash一起回收
- 没办法单独定义field的过期时间,只能定义在Hash类型上
- HKEYS在Hash内数量很多的情况下也极易造成Redis的堵塞
Set类型
相同的元素会忽略,内部数据无序,所以无法根据索引取数据
通常用于确定登录人数
Set的常用操作
SADD/SPOP/SREM
查询集合中的数量:SCARD
判断是否存在:SISMEMBER
Set的数量在5000以下可以用Set操作
Redis的常见问题
1、无法连接至Redis
联系BPS确认是否正常分配;
检查配置文件(大小写、单词是否完整);
确认线上配置是否更新;
Nuget是否升级到最新版本;
dll是否上传
2、Redis性能
查看当前的并发量是否超标(线上6W;线下1W~2W);
流量是否沾满(线上1G,但是600M就会开始报警);
联系BPS或缓存组查看CPU使用率
3、为什么不能多项目公用一个缓存
易导致数据混淆;
迁移困难,基本属于无法迁移;
万一哪天修改key值,value值,所有项目都要换;
依赖关系不确定
4、为什么申请100G的Redis不能通过
Redis基于内存的,目前服务器大多还是64G的;
Redis适合做缓存,数据库方面不合适(不过最近在研究RocksDB/LevelDB);
过大的Redis迁移和故障处理十分困难
5、究竟选哪种环境
单机环境:数据不重要,丢失无所谓
集群环境:高可用、可扩展、不需要Redis计算功能
主从环境:需要Redis的key间计算功能