Keys通用操作:
- 显示所有键列:keys *
- 指定开头键列:keys [*]?
- 删除:del 键...
- 判断存在:exists 键
- 重命名:rename 旧键名 新键名
- 设过期时间(单位是s秒):expire 键 [seconds]
- 查过期时间:ttl 键
- 键的值类型:type 键
- 清空缓存:flushall
Redis中数据库特性:
- 每个Redis实例有16个数据库,角标从0~15,默认为0,也可以通过select来选择数据库。
比如:select 1,选择1号数据库。 - move用于在不同数据库之间移动数据。比如:move myset 1,表示移动myset这个key到1号数据库。
- 开启事务会将任务放到queue中,当提交事务时逐个执行。
命令:
- 切换数据库:select [0~15]
- 移动数据到指定数据库:move name databaseIndex
- 开启事务:multi
- 提交事务:exec
- 回滚事务:discard 相当于rollback
数据持久化:
Redis高性能是因为所有的数据都是存储在内存当中,但是使Redis重启后仍然能保持数据不丢失,就需要将数据从内存当中同步到内存上,这个过程称为持久化,常用的有两种方式:
- RDB:Redis默认支持的,不需要进行配置,在指定的时间间隔内将内存中的数据快照写入磁盘
- AOF:以日志的形式记录服务器所处理的每个操作,在Redis服务器启动时会读取该日志文件来重新构建数据库,保证启动后的数据是完整的。默认是关闭的,需要我们手动开启
我们也可以将redis持久化关闭,关闭以后可以将redis看成一个缓存.用作缓存
还可以同时使用 RDB和AOF 两种方式保证数据持久化,使数据更完整
RDB:
优点:
- 可将数据库保存为一个文件,便于备份
- 可方便移植
- 性能最大化,可开启小的进程处理持久化操作
缺点:
- 不能保证数据完整性,例如在下一次保存快照之前宕机了,那么这部分的数据可能就丢失了。
- 持久化需要fork一个子进程来处理,当数据过大这将会延迟几百到一千毫秒
配置过程:
- 编辑redis.conf文件:vim redis.conf
- 找到时间戳, save <seconds> <changes>
save 900 1:900s之内键值发生1次改变则执行持久化
save 300 10:300s之内键值发生10次改变则执行持久化
save 60 100000:60s之内键值发生100000次改变则执行持久化 - 所有的数据默认保存在rdb文件中,rdb文件默认保存在redis安装目录
AOF:
优点:
- 同步写入频率高,效率低,方式最安全.
- 写入模式采用append模式,追加模式, 不破坏写入日志数据,在redis中追加也不会破坏文件.如果在写入一半的时候出现熊崩溃问题,redis下次启动之前通过 redis-check-aof这个工具来帮助数据一致性问题
- 当数据过大,可启动修改重写机制,redis采用append的这种机制,将新的修改的数据不断地写到老的磁盘文件当中,同时创建新的文件保存操作,保证修改数据的更新
- 日志文件格式清晰,便于重建数据
缺点:
- 对于相同数据集aof文件比rdb文件大一些
- 根据同步策略不同,效率比rbd低.
配置过程:
- 编辑redis.conf:vim redis.conf
- 找到appendonly,需要改成yes(因为默认使用rdb方式所以默认为no),同时还需要在下面配置同步策略:
- Appendfsync always::修改一次就同步到磁盘上(安全性最高)
- Appendfsync everysec:每秒会向硬盘中同步一次
- Appendfsync no:不同步到硬盘中
- Redis的目录下会产生appendonly.aof这个文件,用来保存appendonly的之前的增删改操作,
- 停掉redis ./bin/redis-cli shutdown
- 重启redis ./bin/redis-servers ./redis.conf
- flushall清空数据库
- 进入appendonly.aof删除flushall可以恢复数据库