缓存3——Redis

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间计算功能

Redis 命令参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容