1、什么是redis
Redis是一个基于内存的使用C语言编写的key-value开源的NOSQL存储系统。
不支持SQL语句。
2、Redis持久化数据的方式有哪些
1、RDB 触发式的序列化
Save 5 2 (5秒钟 有两个动作便会触发序列化)
2、AOF 日志形式的序列化
默认:一秒钟存储一次
3、解决IT行业数据读取瓶颈的终极方案
读写分离
4、Redis如何实现读写分离?
Redis本身支持读写分离,主节点可以读数据、可以写数据、从节点只能读数据。配置redis的主从复制机制可实现读写分离。
在从节点的配置文件中: 配置 slaveof 主机名 端口
5、介绍哨兵机制
哨兵机制解决了当主节点宕机导致的业务数据无法写入redis的问题
。
在redis的主从复制结构中,若没有哨兵机制,主节点宕机,将无法写数据到redis集群。
配置哨兵机制,当主节点宕机后,哨兵会在原本为从节点的服务器中选取一个作为主节点,接受外部数据的写入。以此实现当主节点宕机后redis依然可以写入数据的功能。
redis字符串操作必须掌握
添加字符串 | set hello world |
---|
设置多个KV | mset AA AAA BB BBB CC CCC |
设置过期时间 | setex hello1 5 word1 |
查询字符串 | get hello |
查询多key | mget hello hello2 hello3 |
查询长度 | strlen hello |
修改字符串 | set hello world2 |
删除字符串 | del hello |
Hash必须掌握
添加一个hash列表 | hset hkey1 name zhangsan |
---|
一次设置多个值 | hmset hkey3 name wangwu age 20 sex 1 |
查看数据 | hget hkey1 name |
查询key内所有的字段 | hkeys hkey3 |
查询key的数据量 | hlen hkey3 |
查询某一key内多字段的值 | hmget hkey3 name age |
修改数据 | hset hkey1 name zhangsan2 |
删除key中的数据 | hdel hkey3 sex |
List必须掌握
添加一个或多个值到列表 | lpush lkey1 zhangsan lisi |
---|
向已经存在的列表中插入数据(右边插入) | rpush lkey1 AA BB |
查询list中所有数据 (-1表示所有) | lrange lkey1 0 -1 |
通过索引查询数据 | lindex lkey1 0 |
通过索引修改数据 | lset lkey1 5 eee |
删除指定key数据 | del lkey1 |
移出并获取列表的第一个元素 | lpop lkey1 |
移出并获取列表的最后一个元素 | rpop lkey1 |
移除列表的最后一个元素,并将该元素添加到另一个列表并返回 | rpoplpush lkey1 lkey2 |
Set 必须掌握
向集合添加一个或多个数据 | sadd skey1 zhangsan lisi |
---|
查询集合所有数据 | smembers skey1 |
查询两个集合的差值 | sdiff skey1 skey2 |
查询两个集合交集 | sinter skey1 skey2 |
查询并集 | sunion skey1 skey2 |
将数据在一个集合移动到另一个集合 | smove skey1 skey2 zhangsan |
移除结果中的某个数据 | srem skey2 zhangsan |
对Key的常用操作
查询所有符合模式的key | Keys * |
---|
查询key对应数据的类型 | Type hkey1 |
查询剩余过期时间(秒) | ttl hkey1 |
对key进行重命名 | Rename hkey1 hkey10 |
删除存在的key | del BB |
补充
- Redis默认有16个数据库
- 使用
select N (0-15)
实现数据库的切换 - flushdb 清空一个数据库内的所有数据
- flushall 清空所有数据库内的所有数据