redis快速入门(知识梳理)

redis:Remote Dictionary Server(远程字典服务器)

是开源C语音编写,遵守BSD协议,是高性能(key/value)分布式内存数据库。
基于内存运行,数据结构服务器。redis:数据结构服务器(二进制安全,)
写:8w/s 读:11w/s ,单进程

启动redis ,redis端口默认为6379

#启动redis
redis-server redis.config
#进入端口为6379的redis
redis-cli -p 6370

redis五大数据类型

redis字符串(string)value最多512M
redis列表(list):按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
redis集合(set):无序无重复的hashtable
redis哈希(hash):是一个键值对结合Map<String,object>
redis有序集合(Zset):sorted set有序集合>无重复,关联一个double类型的分数,有序,从小到大排列

redis常见命令

select index:切换数据库
expire key time:给某个数据设置过期时间
ttl key:查看key是否过期-1永不过期,-2已过期
exists key:判断key是否存在1存在0不存在
flushdb:清空当前库
flushall:清空所有库

string数据类型的操作命令

append:字符串后面叠加字符
setnx key v:判断时候存key,存在就插入失败0,不存在就插入成功1
mset key v:插入多个值
msetnx key v:插入多个不存在的值,如果有一个存在则都插入失效

list数据类型的操作命令

lpush key v v:从左边插入
rpush key v v:从右边插入
lrange 0 -1:从左边输出
lpop key:从左边排除
rpop key:从右边排除
llen key:list长度
lindex key index:获取list下标值
lrem key number value:删除n个value
ltrim key 开始index 结束index,截取指定范围后在赋值给key
rpoplpush:列表源 目的源

set数据类型的操作命令

sadd key v v:添加值
smembers key:打印set里面的值
scard key:获取集合里面有多少个值
srem key value:删除某个值

hash数据类型的操作命令(\color{#FF3030}{这里需知hash类型;kv模式不变,但v是一个键值对})

hset key key v:插入一个键值
hget key key:获取hash里面key里面的键值;
hgetall key:获取hash 所有键值
hmset key key v key v:插入多个键值
hdel key key:删除hash的兼职

redis的持久化

rdb:
1、持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。
2、复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
3、哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。
4、集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。
aof:
以日志的形式来记录每个写操作。(也就是记录redis的执行命令)

redis事务

首先谈谈redis支持事务吗?
答案是肯定支持,但是只是支持部分事务,\color{#FF3030}{这里大家需注意,面试踩坑}
1,它先以 \color{#FF3030}{MULTI} 开始一个事务, 然后将多个命令入队到事务中, 最后由 \color{#FF3030}{EXEC}命令触发事务, 一并执行事务中的所有命令
(1)为啥说redis只对事务部分支持嘞?看看下图大家就知道了

image.png

所以这里的事务可以理解为一个打包的批量执行脚本,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。所以说是部分支持!

redis的主从复制和哨兵模式

(1)主从复制:配从不配主
slaveof 主机域名 主机端口:在从机输入命令
info replication:查看连接信息


image.png

image.png

\color{#FF3030}{这里我已经配置了从机所以它的role为slave,主机为master}
\color{#FF3030}{这主机可以看到我这里有几台从机连接,我这里是有两台,slave0:6379,slave1:6380}
(2)一主二仆:
主机死掉,从机原地待命,主机重连,从机开始工作
从机死掉,连接断开,需要重新连接
slaveof no one:反客为主,使当前数据库停止与其他数据库的同步,转成主数据库
slave启动的成功连接到master后会发送一个sync(复制全量)命令

(3)哨兵模式

简单说就是反客为主的自动版。
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

在sentinel.conf文件配置一下

配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,127.0.0.1代表监控的主服务器,6379代表端口,1代表只有一个或一个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。

sentinel monitor mymaster 127.0.0.1 6379 1

启动哨兵进程

./redis-sentinel ../sentinel.conf

好这里就是redis的一个简要入门篇,希望大家多多努力成为自己想要的自己.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。