概述
文章目录
- 一、redis常用命令
- 1.1 检测redis是否启动
- 1.2 远程服务器上执行命令
- 1.3 避免中文乱码
- 1.4 序列化key值
- 1.5 检查给定的key是否存在
- 1.6 设置key的过期时间
- 1.7 查找给定模式的key
- 1.8 使用某个数据库
- 1.9 将当前key移动到某个数据库
- 1.10 移除某个key的过期时间
- 1.11 查看key的剩余过期时间
- 1.12 查看key的类型
- 二、string类型相关命令
- 2.1 同时设置key-value对
- 2.2 key自增1
- 2.3 给key加上特定的值
- 2.4 string类型存储容量
- 2.5 setnx
- 三、redis其他命令
- 3.1 发布订阅模型
- 3.2 redis中的事务操作
- 3.3 redis连接命令
- 3.4 服务器相关命令
- 四、redis高级命令
- 4.1 数据备份与恢复
- 4.2 redis安全
- 4.3 redis性能测试
- 4.3 redis客户端链接
- 4.4 redis管道技术
- 4.5 redis 分区
- 4.6 redis多数据库
- 五、redis配置文件
- 5.1 建议修改
- 5.2 关闭命令
- 5.3 key的有效问题
- 六、Hash类型有关命令
- 6.1 hset
- 6.2 hmset
- 6.3 HEXISTS
- 6.4 HGETALL
- 6.5 HINCRBY
- 6.6 hkey
- 6.7 HLEN
- 6.8 HVALS
- 6.9 hdel
- 6.10 del
一、redis常用命令
1.1 检测redis是否启动
127.0.0.1:6379> ping
PONG
1.2 远程服务器上执行命令
ybx@ybx-PC:~$ redis-cli -h 127.0.0.1 -p 6379 -a 12345678
127.0.0.1:6379>
1.3 避免中文乱码
ybx@ybx-PC:~$ redis-cli --raw
127.0.0.1:6379>
1.4 序列化key值
127.0.0.1:6379> dump a
"x00x03qweax00xb2xbex91xdexed7]xed"
1.5 检查给定的key是否存在
127.0.0.1:6379> exists a
(integer) 1
1.6 设置key的过期时间
127.0.0.1:6379> expire a 12
(integer) 1
1.7 查找给定模式的key
127.0.0.1:6379> keys *
1) "stu1"
1.8 使用某个数据库
127.0.0.1:6379> select 1
OK
1.9 将当前key移动到某个数据库
127.0.0.1:6379[1]> move a 0
(integer) 1
1.10 移除某个key的过期时间
127.0.0.1:6379> persist a
(integer) 1
1.11 查看key的剩余过期时间
- 以秒为单位
127.0.0.1:6379> ttl a
(integer) -1
- 以毫秒为单位
127.0.0.1:6379> pttl a
(integer) -1
1.12 查看key的类型
127.0.0.1:6379> type key
string
二、string类型相关命令
2.1 同时设置key-value对
127.0.0.1:6379> mset key1 value1 key2 value2
OK
2.2 key自增1
127.0.0.1:6379> get key
"1"
2.3 给key加上特定的值
127.0.0.1:6379> incrby key 3
(integer) 4
2.4 string类型存储容量
键最大可存储512m。
2.5 setnx
只有当key值不存在时才会设置成功
三、redis其他命令
3.1 发布订阅模型
- 订阅某个频道
127.0.0.1:6379> subscribe cctv19
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "cctv19"
3) (integer) 1
1) "message"
2) "cctv19"
3) "new-msessage"
1) "message"
2) "cctv19"
3) "new messgae"
- 向该频道发送消息
127.0.0.1:6379> publish cctv19 'new messgae'
(integer) 1
3.2 redis中的事务操作
-
multi
标记一个事务的开始 -
exec
执行事务块中的所有指令 -
discard
取消事务块中的所有指令 -
watch
Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
- 回滚
事务中出现报告错误,事务才会取消
报告错误就是语法错误
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set new-key 12
QUEUED
127.0.0.1:6379> 12121
(error) ERR unknown command '12121'
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
- watch
用来监视某一个key,即如果在一个事务中操作这个key,但是在其他事务中修改了这个key,则这个事务就会执行失败。 - unwatch
取消对某个key的监视
3.3 redis连接命令
- ahth password
输入密码 - quit
关闭当前连接 - select num
切换到指定数据库
3.4 服务器相关命令
- bgsave
异步的将数据保存到磁盘上,会fork一个子进程去做这件事 - bgwriteaof
异步执行一个aof文件的重写操作,重写会创建一个当前 AOF 文件的体积优化版本。即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。 - 列出所有已连接的客户端
127.0.0.1:6379> client list
id=2 addr=127.0.0.1:56742 fd=5 name= age=59 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
- 杀死当前客户端的连接
127.0.0.1:6379> client kill 127.0.0.1:56742
OK
- 获取当前链接的名称
127.0.0.1:6379> client getname
(nil)
-
redis config set
Redis Config Set 命令可以动态地调整 Redis 服务器的配置(configuration)而无须重启。 -
dbsize
Redis Dbsize 命令用于返回当前数据库的 key 的数量。 -
flushall
Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。 -
role
Redis Role 命令查看主从实例所属的角色,角色有master, slave, sentinel。
127.0.0.1:6379> role
1) "master"
2) (integer) 0
3) (empty list or set)
-
save
Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。 -
sync
同步主从服务器
四、redis高级命令
4.1 数据备份与恢复
-
save
该命令将在 redis 安装目录中创建dump.rdb文件。 -
数据恢复
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。 -
获取redis目录
127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"
- Bgsave
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
4.2 redis安全
- 查看是否设置了密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "12345678"
- 设置密码
127.0.0.1:6379> config set requirepass 123456
OK
- 密码登录
auth 123456
4.3 redis性能测试
Redis 性能测试是通过同时执行多个命令实现的。
1 | -h | 指定服务器主机名 | 127.0.0.1 |
---|---|---|---|
2 | -p | 指定服务器端口 | 6379 |
3 | -s | 指定服务器 | socket |
4 | -c | 指定并发连接数 | 50 |
5 | -n | 指定请求数 | 10000 |
6 | -d | 以字节的形式指定 | SET/GET 值的数据大小 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用随机 key, SADD 使用随机值 | |
9 | -P | 通过管道传输 请求 | 1 |
10 | -q | 强制退出 redis。仅显示 query/sec 值 | |
11 | –csv | 以 CSV 格式输出 | |
12 | -l | 生成循环,永久执行测试 | |
13 | -t | 仅运行以逗号分隔的测试命令列表。 | |
14 | -I | Idle 模式。仅打开 N 个 idle 连接并等待。 |
- 基本命令
redis-benchmark [option] [option value]
注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。
ybx@ybx-PC:/var/lib$ redis-benchmark -n 10000 -q
PING_INLINE: 114942.53 requests per second
PING_BULK: 116279.06 requests per second
SET: 114942.53 requests per second
GET: 114942.53 requests per second
INCR: 117647.05 requests per second
LPUSH: 114942.53 requests per second
RPUSH: 117647.05 requests per second
LPOP: 117647.05 requests per second
RPOP: 116279.06 requests per second
SADD: 117647.05 requests per second
SPOP: 117647.05 requests per second
LPUSH (needed to benchmark LRANGE): 116279.06 requests per second
LRANGE_100 (first 100 elements): 117647.05 requests per second
LRANGE_300 (first 300 elements): 116279.06 requests per second
LRANGE_500 (first 450 elements): 116279.06 requests per second
LRANGE_600 (first 600 elements): 116279.06 requests per second
MSET (10 keys): 119047.62 requests per second
ybx@ybx-PC:/var/lib$ redis-benchmark -h 127.0.0.1 -p 6379 -t set, get, lpush -n 10000 -q
====== get, lpush -n 10000 -q ======
100000 requests completed in 0.84 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.92% <= 1 milliseconds
100.00% <= 1 milliseconds
119331.74 requests per second
4.3 redis客户端链接
- 最大连接数
127.0.0.1:6379> config get maxclients
1) "maxclients"
2) "10000"
- 以下实例我们在服务启动时设置最大连接数为 100000:
redis-server --maxclients 100000
1 | CLIENT LIST | 返回连接到 redis 服务的客户端列表 |
---|---|---|
2 | CLIENT SETNAME | 设置当前连接的名称 |
3 | CLIENT GETNAME | 获取通过 CLIENT SETNAME 命令设置的服务名称 |
4 | CLIENT PAUSE | 挂起客户端连接,指定挂起的时间以毫秒计 |
5 | CLIENT KILL | 关闭客户端连接 |
4.4 redis管道技术
Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:
客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
服务端处理命令,并将结果返回给客户端。
4.5 redis 分区
4.6 redis多数据库
- select num
选择某个数据库 - move key db
将key移动到某个数据库 - flushdb
清楚当前数据库所有key - flushall
清楚所有数据库的key
五、redis配置文件
5.1 建议修改
- 以守护进程的方式运行
- 注释掉 bind 127.0.0.1
- 设置密码
5.2 关闭命令
- kill -9 pid
不安全,容易造成数据丢失 - shutdown
安全,不会造成数据丢失
5.3 key的有效问题
- 0代表还有0秒过期
- -1代表永久有效
- -2代表失效
六、Hash类型有关命令
6.1 hset
设置一对key,value 值,value值也是一个键值对
127.0.0.1:6379> hset user1 name ybx
(integer) 1
6.2 hmset
是指一个key,多个value值,value值也是一个键值对
127.0.0.1:6379> hmset user1 name ybx age 23
OK
6.3 HEXISTS
查看字段是否存在
127.0.0.1:6379> hexists user1 name
(integer) 1
6.4 HGETALL
获取所有的字段
127.0.0.1:6379> hgetall user1
1) "name"
2) "ybx"
3) "age"
4) "23"
6.5 HINCRBY
为字段加上某一个值
127.0.0.1:6379> hincrby user1 age 4
(integer) 27
6.6 hkey
获取value中所所有字段
127.0.0.1:6379> hkeys user1
1) "name"
2) "age"
6.7 HLEN
获取哈希表中字段的数量
127.0.0.1:6379> hlen user1
(integer) 2
6.8 HVALS
获取哈希表中所有值
127.0.0.1:6379> hvals user1
1) "ybx"
2) "27"
6.9 hdel
删除某一个字段
127.0.0.1:6379> hlen user1
(integer) 1
6.10 del
可以直接删除hash类型
127.0.0.1:6379> del user1
(integer) 1
最后
以上就是勤恳香氛为你收集整理的redis 补充(1)基本命令一、redis常用命令二、string类型相关命令三、redis其他命令四、redis高级命令五、redis配置文件的全部内容,希望文章能够帮你解决redis 补充(1)基本命令一、redis常用命令二、string类型相关命令三、redis其他命令四、redis高级命令五、redis配置文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复