1. Redis 介绍
Redis(Remote Dictionary Server ),即远程字典服务。
一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key - Value 数据库,并提供多种语言的 API。
2. 启动
双击安装目录下的 redis-server.exe
打开服务,然后双击 redis-cli.exe
可以使用Redis,在 redis-cli.exe
打开的命令行中输入 ping
,如果能够连接Redis则会返回 PONG
。
3. redis-benchmark
Redis 安装后自带一个压力测试工具,即 redis-benchmark,使用这个工具能测试不同条件下redis的性能,常用的命令如下:
命令 | 含义 |
---|
-c (clients) | 客户端的并发量(默认 50) |
-n (num) | 客户端请求数量(默认 100000) |
-q | 仅仅显示 redis-benchmark 的 requests per second 信息 |
-r (random) | 向 Redis 插入更多随机的值 |
-P | 每个请求pipeline的数据量(默认为 1) |
-k | 客户端是否使用 keepalive,1 为使用,0 为不使用,默认值为 1 |
-t | 对指定命令进行基准测试 |
–csv | 将结果按照 csv 格式输出 |
比如模拟100个并发用户的100000个请求操作如下
- 在安装目录下打开命令行
- 输入
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
输出内容如下

可以看到,输出了每一条命令的执行时间以及每个时间段的完成率等信息。
4. 基础命令
Redis 默认有 16 个数据库,默认使用的是第 0 个数据库,不同数据库存不同的值,常用的命令如下:
命令 | 含义 |
---|
select 1 | 切换到1号数据库 |
dbszie | 查看当前数据库大小 |
flushdb | 清空当前数据库 |
flushall | 清空所有数据库 |
keys * | 查看当前数据库所有的键 |
move hello 2 | 将键移动到2号数据库 |
expire hello | 设置键生存时间,默认单位是秒 |
ttl hello | 查看键剩余生存时间 |
type hello | 查看键类型 |
del hello | 删除键 |
5. String 类型
5.1 赋值取值命令
命令 | 含义 |
---|
set key1 value | 普通的key-value赋值 |
append hello "Hello World" | 在键 hello 对应的值后面追加 “Hello World” |
getset hello4 "Hello4" | 返回 hello4 键现在的值,然后对其进行赋值 |
mset key1 v1 key2 v2 | 可以设置多个键值,对应的为 mget 获取多个键 |
setex hello 60 "Hello World" | 设置过期时间并创建 |
strlen hello | 获取hello键对应值的长度 |
5.2 增减命令
命令 | 含义 |
---|
incr num1 | 执行一次会让对应 key 的值加 1 |
decr num1 | 执行一次会让对应 key 的值减 1 |
incrby num1 10 | 执行一次会按照设置的步长增加一次 |
decrby num1 10 | 执行一次会按照设置的步长减少一次 |
5.3 截取替换
命令 | 含义 |
---|
getrange hello 0 4 | 截取对应值的字符串,截取的范围是左闭右闭 |
getrange 0 -1 | 截取全部,与 get key 效果一致 |
getrange hello 0 4 | 截取对应值的字符串,截取的范围是左闭右闭 |
setrange hello 6 sail | 从指定位置开始一一替换 |
getrange hello 0 4 | 截取对应值的字符串,截取的范围是左闭右闭 |
6. List 类型
Redis里面定义列表的命令前面加 L
表示针对的是第一个元素, 命令前面加 R
表示针对的是最后一个元素。
6.1 赋值命令
命令 | 含义 |
---|
Lpush list one | 在第一个位置插入一个元素 |
Rpush list four | 在最后一个位置插入一个元素 |
Linsert list before two three | two 之前插入 three |
Linsert list after two three | two 之后插入 three |
Lset list 0 one | 赋值列表指定下标元素 |
6.2 取值命令
命令 | 含义 |
---|
Lrange list 0 1 | 查询指定下标范围元素 |
Lrange list 0 -1 | 查询所有元素 |
Llen list | 获取列表长度 |
Lset list 0 one | 获取下标为0的元素 |
6.3 删除命令
命令 | 含义 |
---|
Lpop list | 移除最左边的元素 |
Rpop list | 移除最右边的元素 |
Lrem list 1 one | 移除一个指定元素 |
Lrem list 2 three | 如果 three 有两个,则移除两个指定元素 |
6.4 截取和移动
命令 | 含义 |
---|
Ltrim list 1 2 | 截取下标 1 到 2 的元素 |
Rpoplpush list list2 | 移除列表list 最后一个元素并移动到新列表list2 中 |
7. set 类型
7.1 赋值和移动
命令 | 含义 |
---|
Sadd set world | 为集合赋值 |
Smove set1 set2 hello | 移动 set1 中的 hello 到 set2 中(set2 不存在则创建) |
7.2 取值命令
命令 | 含义 |
---|
Sismember set hello | 元素是否存在,存在返回 1,不存在返回 0 |
Smembers set1 | 查看集合中的全部元素 |
Scard set | 返回集合中的元素个数 |
Srandmember set | 随机获取一个元素 |
Sdiff set1 set2 | 取 set1 对于 set2 的差集 |
Sinter set1 set2 | 取 set1 和 set2 的交集 |
Sunion set1 set2 | 两个集合的并集 |
7.3 删除元素
命令 | 含义 |
---|
Srem set world | 删除指定元素 world |
Spop set | 删除栈顶元素 |
8. hash类型
8.1 赋值命令
命令 | 含义 |
---|
Hset hash f1 sail | 单个Hash赋值 |
Hmset hash f2 sail2 f3 sail3 | 多个哈希赋值 |
Hsetnx hash f4 1 | f4 不存在才赋值成功,否则赋值失败 |
Hincrby hash f3 1 | 执行一次增加 1 |
8.2 取值命令
命令 | 含义 |
---|
Hget hash f1 | 单个取值 |
Hmget hash f2 f3 | 多个取值 |
Hgetall hash | 取得所有值 |
Hkeys hash | 取得所有key值 |
Hvals hash | 取得所有value值 |
Hlen hash | 获得哈希表长度 |
Hexists hash f1 | 哈希字段是否存在 |
8.3 删除操作
9. 有序集合ZSet
9.1 赋值命令
命令 | 含义 |
---|
Zadd zset 1 one | 添加指定的成员指定的分数存放在键的有序集合 |
Zadd zset 2 two 3 three | 添加多个指定的成员指定的分数存放在键的有序集合 |
9.2 取值命令
命令 | 含义 |
---|
Zrange zset 0 1 | 获取第一和第二个值 |
Zrange zset 0 -1 | 获取ZSet全部的值 |
Zrevrange zset 0 -1 | 倒序查找ZSet中的元素 |
Zcard zset | 获取ZSet中元素个数 |
Zcount zset 1 3 | 获取分数值在 1和 3 之间的成员的数量 |
9.3 排序和删除
命令 | 含义 |
---|
Zrangebyscore zset -inf +inf | 负无穷到正无穷正序排列 |
Zrevrangebyscore zset +inf -inf | 正无穷到负无穷倒序排列 |
Zrem zset three | 移除指定元素 three |