6.8 dbsize查看键数目
dbsize 命令的作用是查看当前数据库中key的数目。
127.0.0.1:6379> dbsize #查看键数目 (integer) 11 #一共11个键 127.0.0.1:6379> 复制代码
6.9 设置和清空密码
1、设置和查看密码
使用 config set requirepass password
命令设置密码。(一旦设置密码,必须先验证通过密码,否则所有操作不可用)
使用 config get requirepass
命令查看密码。
127.0.0.1:6379> config set requirepass 123456 #设置密码 OK 192.168.72.60:6379> config get requirepass (error) NOAUTH Authentication required. #设置密码后,需要先验证密码才能操作其他命令 127.0.0.1:6379> auth 123456 #验证密码 OK 192.168.72.60:6379> config get requirepass #查看密码 1) "requirepass" 2) "123456" #设置密码后,使用密码登录可以直接操作,不需要二次验证 [root@yuji ~]# redis-cli -h 192.168.72.60 -p 6379 -a 123456 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 192.168.72.60:6379> get teacher "lisi" 复制代码
2、清空密码:
使用 config set requirepass ''
清空密码。
192.168.72.60:6379> config set requirepass '' #清空密码 OK 192.168.72.60:6379> config get requirepass 1) "requirepass" 2) "" #密码已为空 复制代码
七、Redis多数据库操作
Redis 支持多数据库,Redis默认情况下包含16个数据库,数据库名称是用数字0-15来依次命名的。
使用redis-cli连接Redis数据库后,默认使用的是序号为0的数据库。
多数据库相互独立,互不干扰。
7.1 多数据库间切换select
命令格式:select 序号 #使用redis-cli连接Redis数据库后,默认使用的是序号为0的数据库。 127.0.0.1:6379>select 10 #切换至序号为10的数据库 127.0.0.1:6379[10]>select 15 #切换至序号为15的数据库 127.0.0.1:6379[15]>select 0 #切换至序号为0的数据库 127.0.0.1:6379[0]> 复制代码
7.2 多数据库间移动数据
命令格式:move 键值 序号 #示例: 127.0.0.1:6379> set k1 100 #在数据库0中设置键k1 OK 127.0.0.1:6379> get k1 #查看键k1的值,为100 "100" 127.0.0.1:6379> select 1 #切换至目标数据库1 OK 127.0.0.1:6379[1]> get k1 #数据库1无法查看到k1的值 (nil) 127.0.0.1:6379[1]> select 0 #切换至目标数据库0 OK 127.0.0.1:6379> get k1 #查看目标数据是否存在 "100" 127.0.0.1:6379> move k1 1 #将数据库0中k1移动到数据库1中 (integer) 1 127.0.0.1:6379> select 1 #切换至目标数据库1 OK 127.0.0.1:6379[1]> get k1 #查看被移动数据 "100" 127.0.0.1:6379[1]> select 0 #切换到数据库0 OK 127.0.0.1:6379> get k1 #在数据库0中无法查看到k1的值 (nil) 复制代码
7.3 清除数据库内数据
FLUSHDB:清空当前数据库数据 FLUSHALL:清空所有数据库的数据,慎用!!! 复制代码
示例:
192.168.72.60:6379[1]> keys * #数据库1中有3个键 1) "shop" 2) "k1" 3) "k2" 192.168.72.60:6379[1]> flushdb #清空当前数据库的数据 OK 192.168.72.60:6379[1]> keys * #数据库1已无数据 (empty list or set) 192.168.72.60:6379[1]> select 0 #切换到数据库0 OK 192.168.72.60:6379> keys * #数据库0的数据仍然存在 1) "k3" 2) "v100" 3) "v30" 4) "v5" 5) "mylist" 6) "v22" 7) "teacher" 8) "key:__rand_int__" 9) "counter:__rand_int__" 10) "k2" 11) "myset:__rand_int__" 192.168.72.60:6379> 复制代码
八、Redis 运维的故障与处理方法
8.1 Redis常见运维故障
- 使用
keys*
把库堵死。——建议使用别名把这个命令改名。 - 超过内存使用后,部分数据被删除。——这个有删除策略的,选择适合自己的即可。
- 没开持久化,却重启了实例,数据全掉。——记得非缓存的信息需要打开持久化。
- RDB的持久化需要
Vm.overcommit_memory=1
,否则会持久化失败。 - 没有持久化情况下,主从,主重启太快,从还没认为主挂的情况下,从会清空自己的数据,人为重启主节点前,先关闭从节点的同步。
8.2 Redis故障排查
- 结合Redis 监控查看QPS、缓存命中率、内存使用率等信息。
- 确认机器层面的资源是否有异常。
- 故障时及时上机,使用
redis-cli monitor
打印出操作日志,然后分析(事后分析此条失效)。 - 和研发沟通,确认是否有大Key在堵塞(大Key也可以在日常的巡检中获得) 和组内同事沟通,确实是否有误操作。
- 和运维同事、研发一起排查流量是否正常,是否存在被刷的情况。
总结
1.常见的关系型数据库?
oracle、MySQL、SQL Server、Microsoft Access、DB2、PostgreSQL
2.常见的非关系型数据库?
Redis、MongBD、Hbase、Memcached、ElasticSearch(索引数据库)、TSDB(时间序列数据库)
3.什么是Redis?
Redis(远程字典服务器)是一个开源的、使用c语言编写的NosQL数据库。
Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或的一环。
4.为什么需要Redis?
Redis 适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需要保证弱一致性、逻辑简单的场景。
5.Redis如何性能测试?
使用 redis-benchmark 测试工具。
6.Redis默认数据类型:string
7.Redis为什么这么快?
- 1、Redis是一款纯内存结构,避免了磁盘 I/O 等耗时操作。(基于内存运行)
- 2、Redis命令处理的核心模块为单线程,减少了锁竞争,以及频繁创建线程和销毁线程的代价,减少了线程上下文切换的消耗。(单线程模型)
- 3、采用了 I/O 多路复用机制,大大提升了并发效率。(epoll模式)
8.Redis数据库命令
1)常用名命令
set 、get: 存放、获取数据
del: 删除键
keys: 获取key,可以结合通配符 * 和 ?
exists: 判断key是否存在
type: 查看数据类型
rename和renamenx: 重命名的两种,后者会进行判断,存在则不改
dbsize: 查看当前数据库中key的数目
2)多数据库操作
select 序号 : 切换库名(16个数据库,数据库名称是用数字0-15)
move 键值 序号: 多数据库间移动数据
FLUSHDB : 清空当前数据库数据
FLUSHALL : 清空所有数据库的数据,慎用!!!