五、多数据库常用命令
Redis 支持多数据库,Redis默认情况下包含16个数据库,数据库名称是用数字0-15来依次命名的。
多数据库相互独立,互不干扰。
#多数据库间切换 命令格式: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的数据库
#多数据库间移动数据 格式:move键值序号 127.0.0.1:6379[10]> set k1 100 #设置k1键为100 OK 127.0.0.1:6379[10]> get k1 #查看k1键 "100" 127.0.0.1:6379[10]> select 1 #切换数据库1 OK 127.0.0.1:6379[1]> get k1 #此时没有k1 (nil) 127.0.0.1:6379> select 10 #切换回数据库10 OK 127.0.0.1:6379[10]> move k1 1 ##将数据库10中k1移动到数据库1中 (integer) 1 127.0.0.1:6379[10]> select 1 #切换到数据库1 OK 127.0.0.1:6379[1]> get k1 #查看数据库1中的k1 "100" 127.0.0.1:6379[1]> select 10 #切换数据库10 OK 127.0.0.1:6379[10]> get k1 #查看键1,此时数据库10中没有了 (nil)
#清除数据库内数据 FLUSHDB:清空当前数据库数据 FLUSHALL:清空所有数据库的数据,慎用! 127.0.0.1:6379[2]> set v1 10 OK 127.0.0.1:6379[2]> set v2 20 OK 127.0.0.1:6379[2]> set v3 30 OK 127.0.0.1:6379[2]> keys * 1) "v3" 2) "v1" 3) "v2" 127.0.0.1:6379[2]> FLUSHDB OK 127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> keys * 1) "v22" 2) "mylist" 3) "k3" 4) "k222" 5) "v1" 6) "k4" 7) "k111" 8) "myset:__rand_int__" 9) "counter:__rand_int__" 10) "key:__rand_int__" 11) "k5" 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> select 10 OK 127.0.0.1:6379[10]> keys * (empty list or set) 127.0.0.1:6379[10]>
六、Redis运维故障
6.1 Redis常见运维故障
1.使用keys*把库堵死,—建议使用别名把这个命令改名
2.超过内存使用后,部分数据被删除——这个有删除策略的,选择适合自己的即可
3.没开持久化,却重启了实例,数据全掉——记得非缓存的信息需要打开持久化
4.RDB的持久化需要Vm.overcommit_memory=1,否则会持久化失败
5.没有持久化情况下,主从,主重启太快,从还没认为主挂的情况下,从会清空自己的数据,人为重启主节点前,先关闭从节点的同步
6.2 Redis故障排查
1.结合Redis 监控查看QPS、缓存命中率、内存使用率等信息
2.确认机器层面的资源是否有异常
3.故障时及时上机,使用redis-cli monitor 打印出操作日志,然后分析(事后分析此条失效)
4.和研发沟通,确认是否有大Key在堵塞(大Key也可以在日常的巡检中获得)
5.和组内同事沟通,确实是否有误操作
6.和运维同事、研发一起排查流量是否正常,是否存在被刷的情况
总结
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