8大数据类型?
- string字符串
- list等价于linklist
- hash字典等价于hashmap,数组+链表
- set等价于hashset键值对是无序的唯一的
- zset有序集合
- Geospatial 地理位置(GEO)
- Hyperloglog 统计
- Bitmap 位图
事务?
分为三个阶段,不支持回滚,原子性,不保证全部成功或失败只保证全部执行或不执行,无法在执行中获取执行的结果。可以通过watch来监视,如果监视的数据发生了变化则不执行后续的命令。
- 事务开始
- 命令入队,先入先出。
- 事务执行,只有这一步才回去redis服务器执行。
乐观锁?
watch监视数据,在事务中如果被监视的数据发生了变化,这里的变化是指任何意识形态的改变,则事务中的命令不执行。与之对应的是unwatch
springboot集成redis之jedis和lettcue?
springboot2.0之后默认建议使用lettcue,lettcue是勇netty实现的nio模型,对集群支持比jedis好。
spring之redisTemplate?
操作redis的java模板
配置文件?
启动redis指定配置文件,常用的配置有:
- bind #绑定ip
- 设置密码
- 数据库数量
- aof
- rdb
rdb?
默认开启,设置写入磁盘时间,二进制数据快照,自动触发手动触发,自动触发会fork一个子进程做备份的事情,redis服务器还可以干其他事,手动触发redis就无法执行其他事情,直到备份完成。如果数据很多耗费性能,会丢数据。
aof?
需要主动打开,保存redis的插入修改命令,文件会很大。
写入机制:
- always #来一条命令保存一次,不丢失数据,磁盘开销大
- everysec #每一秒一次,只丢一秒数据,
- no #不用管,不可控
重写:把aof中过期、重复、没用的进行合并和删除
订阅发布?
订阅公众号关注,会发文章过来,关注的人就收到了。
集群?
缓存击穿,穿透,雪崩?
- 击穿,数据库有
- 穿透,数据库没有
- 雪崩,某一点大面积缓存数据失效