快速上手
相关信息
Redis 是一个基于缓存的 Key-Value 形式的非关系型数据库。
Redis 默认有 16 个库,下标从零开始,默认使用 0 号库,使用 select 命令切换数据库,如 select 3
的作用是切换到下标为 3 的 4 号库。
默认端口号为 6379,默认无密码,将安全维护交给操作系统。
Redis 中关于 range 范围,都是双闭合区间。
下载配置
官网下载,约 10M.
进入安装目录,执行命令 Redis-server --service-install redis.windows.conf --service-name redis6379
将 server 注册为服务 redis6379.
- 启动服务:
net start redis6379
. - 关闭服务:
net stop redis6379
. - 连接Reids:
Redis-cli -p 6379
. - 使cmd显示中文:
redis-cli --raw -p 6379
. - 卸载服务:
redis-server --service-uninstall --service-name redis6379
.
特殊命令
- dbsize 命令,查看当前库的 key 数量。
- flushdb 命令,清空当前库。
- Flushall 命令,清空全部库。
key
key 命令用于管理 Redis 的键。
相关命令:
命令 | 作用 |
---|---|
KEYS * | 查询该库中所有key |
SCAN | 循环查询键,-0:已查完 |
EXISTS key | 判断某个key是否存在,-0:不存在 |
EXPIRE key seconds | 给key设置过期时间seconds秒 |
TTL key | 查看还有多少秒过期,-1:永不过期,-2:已过期 |
TYPE key | 查看key的类型 |
SET key value | 设置值 |
DEL key | 删除 |
GET key | 获取指定key的value |
String
字符串数据类型的相关命令用于管理 redis 字符串值。
相关命令:
命令 | 作用 |
---|---|
APPEND key value | 如果key存在,将value追加到原来值的末尾如果key不存在,执行set key value |
STRLEN key | 返回key存储的字符串值的长度 |
INCR | 自增 |
DECR | 自减 |
INCRBY | 加指定值 |
DECRBY | 减指定值 |
GETRANGE key start end | 返回key中字符串值的子字符串,前后都闭合区间 |
SETRANGE key index value | 用value参数覆写给定key所存储的字符串值,从偏移量index开始 |
SETEX key seconds value | 将value关联到key,并将key的生存时间设为seconds秒,如果key已存在覆写旧值 |
SETNX key value | 将key的值设为value,仅当key不存在 |
MSET | 设置多个 |
MGET | 获得多个 |
MSETNX | 设置多个当kty不存在时 |
GETSET | 将给定key的值设为value,并返回key的旧值 |
List
列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部或者尾部。数据可重复,类似于 LinkedList 链表。
相关命令:
命令 | 作用 |
---|---|
LPUSH | 左加入 |
RPUSH | 右加入 |
LRANGE key start stop | 获得区间数据,0 -1代表取全部 |
LPOP key | 移除并返回列表头部 |
RPOP key | 移除并返回列表尾部 |
LLEN key | 长度 |
LREM key count value | 根据参数count的值,移除列表中与参数value相等的元素 |
LTRIM key start stop | 获取指定区间的数据赋值给key |
RPOPLPUSH k1 k2 | 将第一个列表末尾元素拿出放到第二个列表头部 |
LSET key index value | 将列表key下标为index的元素值设置为value |
LINSERT key BEFORE/AFTER pivot value | 将值value插入到列表key当中,位于pivot之前或之后,多个值默认第一个 |
Hash
Hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,类似与 Map 集合,是一个键值对。适合用于存储对象。
相关命令:
命令 | 作用 |
---|---|
HSET | 插入 |
HGET | 获得 |
HMSET | 插入多个 |
HMGET | 获得多个 |
HGETALL | 获得键值 |
HDEL | 删除 |
HLEN key | 返回长度 |
HEXISTS key field | 查询哈希表key中,给定域field是否存在 |
HKEYS | 获取哈希表中所有值 |
HVALS | 取出所有的域,取出所有的域的值 |
HINCRBY key field INCREMENT | 为哈希表key中的域field的值加上增量increment |
HINCRBYFLOAT key field INCREMENT | 为哈希表key中的域field加上浮点数增量increment |
HSETNX | 将key的值设为value,仅当key不存在 |
Set
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 集合对象的编码可以是 intset 或者 hashtable. Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
相关命令:
命令 | 作用 |
---|---|
SADD key score1 member1 [score2 member2] | 将一个或多个member元素加入集合key中,已经存在与集合的member元素将被忽略 |
SMEMBERS key | 返回集合key中的所有成员 |
SISMEMBER key member | 判断member元素是否集合key的成员 |
SCARD key | 获取集合中元素的个数 |
SREM key value | 删除集合中元素 |
SRANDMEMBER key | 返回指定集合中的一个随机元素 |
SPOP key | 移除并返回集合中的一个随机元素 |
SMOVE k1 k2 member | 将member元素从k1集合移动到k2集合 |
SDIFF k1 [k2]... | 差集,在第一个集合中,不在后面任一集合中 |
SINTER k1 [k2]... | 交集 |
SUNION k1 [k2]... | 并集 |
sortedSet
在 set 集合的基础上,加了一个 score 值,实现有序的 set 集合。不允许重复的成员,每个元素都会关联一个 double 类型的 score 值。Redis 通过 score 来为集合中的成员进行从小到大的排序。
score 可以重复。支持根据 Value 更新 score 的,也支持指定 Value 对 score 做增减。常用来做排行榜,热度榜。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
相关命令:
命令 | 作用 |
---|---|
ZADD key score1 member1 [score2 member2] | 将一个或多个member元素及其score值加入到有序集key中,或者更新已存在成员的分数 |
ZREM key value | 移除key集合中的value值 |
ZCARD | 返回元素个数 |
ZCOUNT key min max | 返回scores在min和max之间元素个数 |
ZRANK key value | 返回有序集key中成员value的排名。其中有序集成员按score值递增顺序排列 |
ZRANGE key index [withscores] | 返回区间中的数据,score从小到大(显示score) |
ZREVRANGE key index [withscores] | 返回区间中的数据,score从大到小(显示score) |
持久化
RDB
RDB(Redis DataBase)是在指定的时间间隔内将内存中的数据集快照写入磁盘。
恢复时是将快照文件直接读到内存里,Redis 会单独创建一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束,再用这个临时文件替换上次持久化的文件。过程中主进程不进行任何IO操作,确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是十分敏感,那么 RDB 方式比 AOF 方式更加高效。RDB 的缺点是最后一次持久化的数据可能丢失。
RDB 备份复原操作:
- 快照在满足配置的条件时自动触发产生 dump.rdb 文件,也可以通过 save 命令手动触发快照,save 时阻塞其他操作,bgsave 会在后台异步进行快照操作,同时还可以响应客户端请求。通过 lastsave 命令获取最后一次成功执行快照的时间。
- 执行 flushall 命令,也会产生 dump.rdb 文件,但是空文件,无意义。
- 将备份文件 dump.rdb 移动到 redis 安装目录并启动服务可以自动把硬盘中的数据导入内存中。

AOF
AOF(Append Only File)是以日志的形式来记录每个写操作,将执行过的所有写指令记录下来(读操作不记录),文件只读,Redis 启动时会读取该文件重新构建数据,也就是 Redis 重启时会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
AOF 采用的文件追加方式,文件会越来越大,为避免出现这种情况,新增了重写机制,当文件的大小超过设定的阈值时,Redis 就会启动 AOF 文件的内容压缩,只保留可以恢复数据的最小指令集。
使用命令 bgrewr iteaof
异步执行一个 AOF 文件重写操作。重写会创建一个当前 AOF 文件的体积优化版本。
AOF 备份复原操作:
- AOF 默认关闭,在配置文件中将
appendonly no
修改为appendonly no
. - 修改配置文件中的 appendfsync 配置项,三个级别取值:always(每次修改同步)、everysec(每秒同步,默认)、no(不同步)。
- AOF 产生的文件名默认为
appendonly.aof
. - 如果 rdb 和 aof 文件共存时优先加载 aof 文件。
- 如果 aof 文件损坏导致 redis 无法启动:进行 redis 安装目录,执行命令
redis-check-aof --fix appendonly.aof
修复。