随笔分类 - Redis
摘要:支持多线程 redis6多线程只是用来处理网络数据的读写和协议解析上,底层数据操作还是单线程 执行命令仍然是单线程,之所以这么设计是不想因为多线程而变得复杂,需要去控制key、lua、事务、LPUSH/LPOP等等的并发问题 默认不开启 io-threads-do-reads yes # 开启多线程
阅读全文
摘要:1.Cluster集群介绍 背景 Sentinel解决了主从架构故障自动迁移的问题 但是Master主节点的写能力和存储能力依旧受限 使用redis的集群cluster就是为了解决单机redis容量有限的问题,将数据按一定的规则分配到多台机器 什么是集群Cluster 是一组相互独立的、通过高速网络
阅读全文
摘要:1.Sentinel哨兵介绍 背景 前面搭建了主从,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,人工干预费事费力,还会造成一段时间内服务不可用 哨兵模式介绍 redis提供了哨兵的命令,是一个独立的进程 原理:哨兵通过发送命令给多个节点,等待redis服务器响应,从而监控运行的多个red
阅读全文
摘要:1.redis主从架构介绍 背景 单机部署简单,但是可靠性低,且不能很好利用CPU多核处理能力 生产环境必须要保证高可用,一般不可能单机部署 读写分离是可用性要求不高、性能要求较高、数据规模小的情况 目标 读写分离,扩展主节点的读能力,分担主节点读压力 容灾恢复,一旦主节点宕机,从节点作为主节点的备
阅读全文
摘要:背景 redis在占用的内存超过指定的maxmemory之后,通过maxmemory_policy确定redis是否释放内存以及如何释放内存 提供多种策略 策略 volatile-lru(least recently used) 最近最少使用算法,从设置了过期时间的键中选择空转时间最长的键值对清除掉
阅读全文
摘要:背景 redis的key配置了过期时间,这个是怎么被删除的? redis数据明明过期了,怎么还占用着内存? redis就只能用10G,你要是往里面写了20G的数据,会发生什么?淘汰哪些数据? redis key过期策略 定期删除+惰性删除 redis如何淘汰过期的key:set name zhang
阅读全文
摘要:config命令介绍(都有默认值) 可以动态的调整redis服务器的配置(configuration)而无需重启 config get xxx、config set xxx 常用配置 daemonize # 后端运行 bind # ip绑定 timeout # 客户端连接时的超时时间,单位为秒。当客
阅读全文
摘要:info命令介绍 服务器的各种信息和统计数值 # Server:有关redis服务器的常规信息 redis_mode:standalone # 运行模式,单机或者集群 multiplexing_api:epoll # redis所使用的事件处理机制 run_id:562bbafb0310a5085c
阅读全文
摘要:redis提供了不同的持久化选项 RDB持久化以指定的时间间隔执行数据集的时间点快照 AOF持久化记录服务器接收的每个写入操作,将在服务器启动时再次读取,重建原始数据集。使用与redis协议本身相同的格式以仅追加方式记录命令,当文件太大时,redis能够重写 RDB的优缺点 优点 RDB最大限度的提
阅读全文
摘要:rewrite重写介绍 AOF文件越来越大,需要定期对AOF文件进行重写达到压缩 旧的AOF文件含有无效命令会被忽略,保留最新的数据命令 多条写命令可以合并为一个 AOF重写降低了文件占用空间 更小的AOF文件可以更快的被redis加载 重写触发配置 手动触发 直接调用bgrewriteaof命令
阅读全文
摘要:AOF持久化介绍 append only file,追加文件的方式,文件容易被人读懂 以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的 写入过程宕机,也不影响之前的数据,可以通过redis-check-aof检查修复问题 配置实战 appendonly yes,开
阅读全文
摘要:redis持久化介绍 redis是一个内存数据库,如果没有配置持久化,redis重启后数据就全丢失 因此开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据 两种持久化方式 RDB(Redis DataBase) AOF(append only file) RDB
阅读全文
摘要:1.缓存击穿+解决方案 缓存击穿(某个热点key失效) 缓存中没有但数据库中有的数据,假如是热点数据,那么key在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力增大。 和缓存雪崩的区别在于这里针对某一key缓存,后者则是很多key 预防 设置热点数据不过期;定时
阅读全文
摘要:1.Cacheable使用缓存 @Cacheable注解 标记在一个方法上,也可以标记在一个类上 缓存标注对象的返回结果,标注在方法上缓存该方法的返回值,标注在类上缓存该类所有的方法返回值 value:缓存名称,可以有多个 key:缓存的key规则,可以使用SpringEL表达式,默认是方法参数组合
阅读全文
摘要:package com.gen.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.f
阅读全文
摘要:官方文档:http://www.redis.cn/commands.html 1.通用命令 exists:判断key是否存在 del:删除key type:判断key类型 ttl:查看key存活时间 2.String类型命令 set/get:设置和获取key-value mset/mget:批量设置
阅读全文
摘要:RedisTemplate介绍 ValueOperations:简单K-V操作 SetOperations:set类型数据操作 ZSetOperations:zset类型数据操作 HashOperations:针对map类型的数据操作 ListOperations:list类型的数据操作 Redis
阅读全文
摘要:创建相关目录 日志 mkdir /usr/local/redis/log 数据 mkdir /usr/local/redis/data 配置文件 mkdir /usr/local/redis/conf 创建自定义配置文件vim redis.conf # 任何ip都可以访问 bind 0.0.0.0
阅读全文
浙公网安备 33010602011771号