之前在培训的时候学习过一段时间的redis,但是工作这么久了,一直没有用到过,决定复习一下。类似忘记的还有nginx和消息队列mq。
安装redis
安装redis非常简单,只需要进入redis的官网---redis.io,里边有下载地址和具体的安装方法。
redis的数据结构
1.字符串
2.数组
3.set集合(无序)
4.zset集合(有序)
5.hashes
注意:key太长会影响查询效率,太短keys可读性就太低了。
具体操作就不粘出来了,我是自己搞了一个虚拟机,然后简单练习了一下。估计以后还会忘,等下次遇到需要命令的时候再百度查吧。
redis的持久化
redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。
RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。---速度快,数据恢复不全
AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。 ---速度慢,数据恢复更全
一般两种方法会同时使用,redis重启的话,会优先使用AOP方式。
RDB方式
redis.conf
手动设置Redis快照名及路径:
创建快照的方式有以下几种:
(1)客户端直接通过命令BGSAVE或者SAVE来创建一个快照
(2)在redis.conf中设置save配置选项(应用开发中比较常用)
(3) 当Redis通过shutdown命令关闭服务器请求时,会执行SAVE命令创建一个快照,如果使用kill -9 PID将不会创建快照。
(4) 主从同步
AOF方式
# redis默认关闭AOF机制,可以将no改成yes实现AOF持久化
appendonly no
# AOF文件
appendfilename "appendonly.aof"
# AOF持久化同步频率,always表示每个Redis写命令都要同步fsync写入到磁盘中,但是这种方式会严重降低redis的速度;everysec表示每秒执行一次同步fsync,显示的将多个写命令同步到磁盘中;no表示让操作系统来决定应该何时进行同步fsync,Linux系统往往可能30秒才会执行一次
# appendfsync always
appendfsync everysec
# appendfsync no
# 在日志进行BGREWRITEAOF时,如果设置为yes表示新写操作不进行同步fsync,只是暂存在缓冲区里,避免造成磁盘IO操作冲突,等重写完成后在写入。redis中默认为no
no-appendfsync-on-rewrite no
# 当前AOF文件大小是上次日志重写时的AOF文件大小两倍时,发生BGREWRITEAOF操作。
auto-aof-rewrite-percentage 100
#当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF。
auto-aof-rewrite-min-size 64mb
# Redis再恢复时,忽略最后一条可能存在问题的指令(因为最后一条指令可能存在问题,比如写一半时突然断电了)
aof-load-truncated yes
#Redis4.0新增RDB-AOF混合持久化格式,在开启了这个功能之后,AOF重写产生的文件将同时包含RDB格式的内容和AOF格式的内容,其中RDB格式的内容用于记录已有的数据,而AOF格式的内存则用于记录最近发生了变化的数据,这样Redis就可以同时兼有RDB持久化和AOF持久化的优点(既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据)。
aof-use-rdb-preamble no
RDB与AOF同时开启 默认先加载AOF的配置文件,因此需要根据具体情况使用,4.0+的可以使用RDB-AOF混合持久化格式
具体java连接redis---http://www.runoob.com/redis/redis-java.html