缓存redis
数据结构
- string :最常用
- hash :可以有子property嵌套结构,方便只召回部分property
- list
- set
- zset:类似java的treeSet实现使用跳表(跳过一定步长)加压缩表的方式,双向链表;
数据持久化
- rdb:存取全量数据,备份和存储周期以另一个线程做驱动
- aof:存取增量数据;到期写、到次数写
缓存淘汰策略
- lru:根据key最近最少使用的淘汰,往往作为默认
1>allkeys:所有
2>volatile:设置过期时间的 - ttl:从已设置过期时间中挑选将要过期的淘汰
- random:数据中随机淘汰
1>allkeys:所有
2>volatile:设置过期时间的 - no-enviction:禁止驱逐,直接报错;一般用于保证数据不能丢失的场景
单线程及原子性
- setnx:设置一个值返回true,如果值已存在返回false不会修改已存在的值,单线程处理,可以保证原子性,work Thread为内存级别的执行,避免cpu切换一般把对应的work Thread绑定在固定的cpu执行