-
Jedis
- java语言连接redis工具
- 准备工作
- 下载地址:https://mvnrepository.com/artifact/redis.clients/jedis
- 基于maven
- <dependency>
- <groupId> redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.9.0</version>
- </dependency>
- <dependency>
- 客户端连接redis
- 连接redis
Jedis jedis = new Jedis("localhost", 6379);
- 操作redis
jedis.set("name", "fan2312");
jedis.get("name");
- 关闭redis连接
jedis.close()
- 连接redis
- Jedis工具类
- redis.properties
redis.host = 127.0.0.1 redis.port = 6379 redis.maxTotal = 30 redis.maxIdle = 10
- 代码
public class JedisUtils{ private JedisPool jp; static{ ResourceBundle rb = ResourceBundle.getBundle("jedis"); String host = rb.getString("jedis.host"); int port = Integer.parseInt(rb.getString("jedis.port")); int maxTotal = Integer.parseInt(rb.getString("jedis.maxTotal")); int maxIdle = Integer.parseInt(rb.getString("jedis.maxIdle")); JedisPoolConfig jpc = new JedisPoolConfig(); jpc.setMaxTotal(maxTotal ); jpc.setMaxIdle(maxIdle ); jp = new JedisPool(jpc, host, port); } public static Jedis getJedis(){ return jp.getResource(); } public static void main(){ JedisUtils.getJedis(); } }
-
可视化客户端
- Redis Desktop Manager
-
基于Linux安装Redis
- 下载安装包:wget https://download.redis.io/releases/redis-?.?.?.tar.gz
- 解压:tar -xvf 文件名.tar.gz
- 编译:make
- 安装:make install
-
指定端口启动服务:
- redis-server --port 6380
- redis-cli -p 6380
-
指定配置文件启动
- 配置文件
port 6379 daemonize yes logfile "6379.log" dir /redis-4.0.0/data
- 启动:redis-server redis-6379.conf
-
持久化
- 利用永久性存储介质保存数据
- 为什么要进行持久化?
- 防止数据的意外丢失,确保数据安全性
- 持久化过程保存什么
- RDB:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据
- AOF:将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程
- RDB启动方式
- 方式一
-
命令:save
-
作用:手动执行一次保存操作
-
配置文件中相关配置
-
save指令的执行会阻塞当前redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用
-
- 方式二
- 命令:bgsave
- 作用:手动启动后台保存操作,但不是立即执行
- bgsave是针对save阻塞问题做的优化。redis内部所有涉及到RDB操作都采用bgsave,而不使用save
- 方式三
- 配置:save second changes
- 作用:满足限定时间范围内key的变化数量达到指定数量即进行持久化
- 参数
- second:监控时间范围
- changes:监控key的变化量
- save配置要根据实际业务情况进行设置,频度过高或过低都会出现性能问题,结果可能是灾难性的
- save配置中对于second与change设置通常具有互补对应关系,尽量不要设置成包含性关系
- 启动后执行的是bgsave操作
- 方式一
-
AOF
-
以独立日志的方式记录每次写命令
-
是Redis持久化的主流方式
-
AOF写数据的三种策略
- always(每次)
- 每次写入操作都同步到AOF文件中,数据零误差,性能较低
- everysec(每秒)
- 每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高
- 系统突然宕机会丢失1秒数据
- no(系统控制)
- 由操作系统控制每次同步到AOF的周期,整体过程不可控
- always(每次)
-
AOF功能开启
- 配置:appendonly yes|no
- 是否开启AOF持久化,默认不开启
- 配置:appendfsync always|everysec|no
- AOF写数据策略
- 配置:appendfilename filename
- AOF持久化文件名,默认为appendonly.aof,建议配置为appendonly-端口号.aof
- 配置:dir
- AOF持久化文件保存路径,与RDB持久化文件保持一致即可
- 配置:appendonly yes|no
-
AOF重写:对同一个数据的若干条命令执行结果转化为最终结果数据对应的指令进行记录
-
AOF重写作用:
- 降低磁盘占用量,提高磁盘利用率
- 提高持久化效率,降低持久化写时间,提高IO性能
- 降低数据恢复用时,提高数据恢复效率
-
AOF重写规则
- 已超时数据不再写入文件
- 忽略无效指令,重写时使用进程内数据直接生成,只保留最终数据的写入命令
- 对同一数据的多条写命令合并成一条命令
-
AOF重写方式
- 手动重写
- bgrewriteaof
- 自动重写(配置)
- auto-aof-rewrite-min-size size
- auto-aof-rewrite-percentage percentage
- 手动重写
-
RDB与AOF选择
- 对数据敏感,使用AOF
- 数据呈现阶段有效性,使用RDB