Redis

Redis
redis数据类型
string
set key value 设置k-v值
get key 查看k对应的v
mset key1 v1 key2 v2 key3 v3 批量设置k-v
mget key1 key2 key3 批量查看k对应的v
setex key second value 设置key的生存时间 ttl key 查看剩余生存时间
setnx key value 当key不存在的时候value生效,存在则不做任何操作 exist key 查看key是否存在
incr key 为key所对应的数值加1,如果不是数值就会报错,如果key不存在,会设置初始化为0的数值,再执行incr命令
decr key 为key所对应的数值减1,如果不是数值就会报错,如果key不存在,会设置初始化为0的数值,再执行decrby命令
incrby key 10 为key所对应的数值加10,如果不是数值就会报错,如果key不存在,会设置初始化为0的数值,再执行incrby命令
decrby key 10 为key所对应的数值减10,如果不是数值就会报错,如果key不存在,会设置初始化为0的数值,再执行decrby命令
hash
hset key field value
创建一张hash表
key:键
field 字段
value 值
field1 field2 field3
key1 value value value
key2 value value value
hget key field
获取某个key的某个字段的值
hgetall key
获取这个key里面所有字段的值
hdel key field
删除指定hash表中指定字段
hexist key field
查看指定key中的字段是否存在,存在返回1,不存在返回0
hmset key field1 value1 field2 value2 field3 value3
创建key中多个字段的值
hkey key
获取key所有的字段
hlen key
返回hash表key中field的数量
list
lpush key value value value
将一个或多个值插入列表的表头
set集合
sadd key 12345
将一个或多个member元素加入到key中,对重复的member忽略不计
scard key
返回该集合当中元素数量,对重复的member忽略不计
sdiff key1 key2
返回key1中有,key2中没有的元素
sinter key1 key2
返回key1和key2的交集
sunion key1 key2
返回key1和key2的并集
smember key1
返回key1的所有member元素
spop key1 count 2
移除并返回集合中的2个随机元素
srem key1 member member member
移除集合当中指定的member元素
zset有序集合
zadd key1 0 a 1 b 2 c 3 d
将一个或多个元素有序的加入到key中
zcard key1
统计有序集合中的元素个数
zcount key1 1 3
返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
zrange key1 0 3 withscores
指定区间内,带有 score 值(可选)的有序集成员的列表。
zrank key 0 -1 withscores
如果 member 是有序集 key 的成员,返回 member 的排名。 如果 member 不是有序集 key 的成员,返回 nil 。
Redis持久化机制
RDB持久化
简介:
RDB是redis用来进行持久化的一种方式,是把当前内存的数据集快照写入磁盘恢复:将快照文件直接读到内存中
优点:
快照保存了redis某一个时间点上的所有数据集,这种文件非常适用于进行备份和灾难恢复
生成RDB文件的时候,redis主进程会fork()一个子进程来处理保存工作,主进程不需要进行任何的磁盘IO操作
RDB在回复大数据集的时候速度会比AOF快
缺点:
RDB方式无法做到秒级持久化,因为每次save都要执行fork操作,属于重要级操作,需要将内存中数据克隆一份,频繁执行成本会很高(性能会受到影响)
RDB文件使用特定的二进制格式保存,Redis版本迭代的过程中,出现了多种RDB格式,老版本格式无法兼容新版本
在一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照的所有
触发方式:
自动触发:主配置文件中save字段,可以设置触发策略
手动触发:bgsave
恢复数据:
将备份的dump.rdb移动到redis安装目录并启动服务即可,redis会自动加载文件数据到
save 900 1
save 300 10
save 60 10000
停止RDB持久化
有些情况下,我们只需要redis缓存功能,并不像使用redis的持久化功能,那么这时候需要停止RDB持久化,可以在
AOF持久化
简介
AOF通过保存redis服务器所执行的写命令来记录数据库状态
优点:
AOF提供了多种的同步频率,默认使用1s进行一次同步,数据丢失也就1s内的数据
AOF文件使用redis命令追加的形式来构造,因此redis只能够向AOF文件写入命令
主从模式
全量同步
Redis全量复制一般发生Slave初始化阶段,这时Slave需要将master上所有数据都复制一份
具体步骤
从服务器连接主服务器,发送Sync命令
主服务器接收到Sync命令后,开始执行BGSAVE命令生成RDB文件,并使用缓冲记录此后执行的所有写命令
主服务器执行BGSAVE命令之后,向所有的从服务器发送快照文件,并在发送期间继续记录执行命令
从服务器接收到快照文件后,丢弃所有旧的数据,载入快照
主服务器快照发送完毕后,开始向所有从服务器发送缓冲区命令
从服务器完成对快照的载入,开始接受命令请求,并执行来自主服务器缓冲区的命令
增量同步
Redis增量复制是指slave初始化后开始正常工作时,主服务器发生的写的操作就同步给服务器的过程,增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收后并执行收到的写命令
同步策略:
主从刚刚开始连接的时候,进行全量同步;全量同步之后进行增量同步。当然,如果有需要的话,Slave在任何时候都可以发起全量同步操作
redis策略是,Slave在任何情况下,首先会去尝试增量同步,如果失败,就进行全量同步。
Redis主从模式的缺点:从高可用去考量
主服务器down了,不能提供服务。但是可以人工将从服务器变成主服务器
主从复制节点的写能力有限,适合多读少写的情况
单机节点的存储能力有限
哨兵模式
解决主从复制的缺点:主服务器down了,由Redis sentinel(哨兵)自动完成故障发现和转移,并通知给应用方,完成高可用性。
工作原理:
每个“哨兵”会想其他“哨兵”、slave、master发送定时消息,以确认对方是“活”着的,如果发现对方在指定时间内没有回应,则暂时挂掉,当“哨兵群”中的多数哨兵都报告某一master没响应,该系统才认为该master“彻底死亡”(down机),通过vote算法,从slave中选举一台提升为master,然后自动修改相关配置。
缺点:
在线扩容会变得很复杂
集群模式:
Redis哨兵模式基本已经可以实现高可用,读写分离,但是这种模式下每台redis服务器都是存储着相同的数据,很浪费内存,所以redis在3.0上加入了cluster模式,实现redis的分布式存储,也就是说每台redis节点上可以存储不同的内容。
工作原理:
对象保存在redis之后,会先经过hash到一个指定的Node上,每个Node会被平均分配slot端,0-16384,不能重复不能缺失,不然会导致对象重复并且无法存储,加入Node之间需要相互通信,一旦有node退出或者加入,会按照Slot为单位进行数据迁移,所以数据不会丢失
优点:
节省存储空间,读写性能都会大大提高,在线扩容简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值