java 使用 Redis 数据库
Redis 是NoSQL的一种(非关系型数据库)
Redis 的安装,连接(源码安装、二进制安装/IP 和端口号)
Redis 存储数据的结构(string list set hash zset)
Redis 的常用命令(get mget set mset incr decr incrby )
java 连接Redis
redis 存储对象 byte[]方式
redis存储对象 string[]方式
Jedis 连接池操作(jedispool )
jedis的管道操作 (jedispipe)
Redis 的yml 文件中允许修改ip 端口号
Redis.conf中修改 AUTH的配置 要求使用 用户名 密码 验证
Redis 持久化机制 -RDB : RDB是将支持当前数据的快照存成一个数据文件的持久化机制。fork 出一个子进程,子进程中循环所有的数据,将数据写入到二进制文件中
Redis事务:与mysql的不同,Redis的事务不具有原子性,该失败还是失败。
Redis哨兵:集群中的每个节点都有一个哨兵,哨兵之间可以相互通信,感知某个节点是否down机,如果master某个节点已经dwon机,就从剩下的节点中再选出一个作为master节点。
Redis主从架构:Redis的每个节点中都有一个从节点,当主节坏掉,就用从节点替换
Redis 的淘汰机制: 当内存不足时,有的key会被删除,策略是有多种,包括 最近最少使用 或者是 随机删除
java连接Redis集群:
rediscluster node = rediscluster()
node.add(ip,port)
node.add(ip,port)
node.add(ip,port)
node.add(ip,port)
Redis 缓存问题: 客户端先查询redis缓存,如果没有数据,在查询数据库(同时将数据备份到redis)。如果redis中没有,数据库中也没有,
id自增,将id的最大值放到Redis中
缓存中的热点数据,突然到期了,造成大量的请求访问数据库,造成宕机,
缓存雪崩: 热点数据的生存时间去掉或者将缓存找那个数据的生存时间设置为一个随机数,避免同时到期。
如果热点数据都放在一个Redis节点上,Redis无法承受大量的请求,最终Redis宕机
1、扩展主从架构,搭建大量的从节点,缓解Redis 压力。
2、在Tomcat中添加JVM 缓存,在查Redis之前,先去查询Tomcat缓存