Redis三种集模式部署⽅式以及数据同步问题Redis总结
⼀:数据类型基本操作
1.0 key基本操作
key * 返回所有key
randomkey 返回随机key
type key 返回key的存储的类型
exists 判断某个可以是否存在
del key 删除key
rename key newkey 改名
move key 1 将key移动到1数据库
ttl key 查询key的⽣命周期(秒)
expire key 正整数,设置key的⽣命周期以秒为单位
pexpire key 正整数,设置key的⽣命周期以毫秒为单位
pttl key 查询可以的⽣命周期(毫秒)
perisist key 把指定key设置为永久有效
1.1String 类型
Set key01 value:创建key
get key01 获取key的值
mset key01 value01 key02 value02 ⼀次设置多个key和value
mget key01 key02 获取多个key的值
append key01 value 在key01的值后⾯增加value
incr key01 ⾃增,返回新值,需要int
strlen key01 获取key的长度
getrange key start stop 获取字符串从start 到stop范围内的值
1.2 List类型
lpush key value 把值插⼊到链表的头部
rpush key value 把值插⼊到链表的尾部
lpop key 返回并删除链表头部元素
rpop key 返回并删除链表尾部元素
lrange key start stop 返回[start stop] 范围内的元素
lrem key count value 从链表中删除value值,删除cout的绝对值个value
count>0表⽰从头删除,<0表⽰从尾部开始删除,count =0表⽰删除完
eg: lrem list_key 1 value1
ltrim key start stop :剪切key对应的连接,切[start stop]⼀段,重新赋予key
lindex key index 返回index索引上的值
llen key 计算list的元素的个数
linsert key after|before search value :在key链表中寻值为search的,并在其前|后添加value rpoplpush source dest :把source的末尾拿出,放在dest头部,并返回单元值
执⾏后的结果
source中尾部移除,dest中头部多了⼀个值。
1.3 Hash类型
hash是⼀个String类型的field和value的映射表,它的添加、删除操作都是O(1),hash特别适合⽤于存储对象
hset myhash field value :设置myhash 的filed为value
eg:hset myhash name wps
hset myhash id 111
hset myhash address 新华社
hmset myhash name wps id 111 address xxx同时设置多个filed
hget myhash filed 获得filed的值
hmget myhash filed1 filed2 获取多个filed的值
hincrby myhash filed 1 在指定的field下加上给定的值,需要时int
hexists myhash filed 测试指定的filed是否存在
hlen myhash 返回hash的filed的数量
hdel myhash field 删除hash的filed
hkeys myhash 返回hash的所有的field
hvals myhash 返回hash的所有的value
hgetall myhash 获取某个hash中全部的field和valuse
1.4 Set集合类型
特点:⽆序性。确定性。唯⼀性
sadd key value1 value2 往集合⾥⾯添加元素
smembers key 获取集合所有的元素
srem key value 删除集合某个元素
spop key 返回并删除集合中1个随机元素(可以做抽奖,不会重复抽到某⼈)
srandmember key 随机取⼀个元素
sismember key value 判断集合是否有某个值
scard key 返回集合元素的个数
smove source dest value 把source的value的值⼀道dest集合中
sinter key1 key2 key3 求key1 和key2 key 3的交集
sunion key1 key2 求key1和key2 的交集
sdiff key1 key2 求key1 和key2 的差集
sinterstore res key1 key2 求key1 和key2 的交集并存在res中
1.5 Sorted Set 有序集合
概念:它在set的基础上增加了⼀个顺序属性,这⼀属性在添加元素的时候可以指定,每次指定后,zset会⾃动按新的值调整顺序
可以理解为两列mysql表,⼀列存储value ⼀列存储顺序,操作中key理解为zset的名字
zadd key score1 value1 添加元素
zrange key start stop [withscore] 把集合排序后,返回名次【start stop】的元素,默认是升序排列, withscres是吧score也打印出来
2 持久化⽅式,以及数据备份和恢复
Redis的所有数据都保存在内存中,然后不定期的通过异步⽅式保存到磁盘中(半持久化模式);也可以把每⼀次数据变化都写⼊到append only file (aof)⾥⾯(全持久化模式)
由于Redis的数据存储在内存中,如果没有配置持久化,redis重启后,数据就会丢失。如果开启了持久化,重启后数据会依然存在,Redis ⽀持两种持久化⽅式
redis支持的五种数据类型2.1 RDB 持久化
将Redis内存中的数据在指定的时间间隔内将数据集快照写⼊磁盘,默认的持久化⽅式,
触发⽅式分为⼿动触发和⾃动触发
⼿动触发
save
⾃动触发
在配置⽂件中添加
save 900 1 900秒内如果超过1个key被修改,则发起快照保存
save 300 10 300秒内如果有超过10key被修改,则发起快照保存
save 60 100000
测试:
如果没有数据没有保存到rdb⽂件中,只存在于内存中,redis重启后这些数据将会丢失,
如果将数据保存到了rdb中,redis重启后这部分数据仍然存在
2.2 AOF持久化
将Redis的操作⽇志以追加的⽅式写⼊⽂件
AOF持久化以⽇志的形式记录服务器所处理的每⼀个写、删除操作,查询操作不会记录,以⽂本的⽅式记录,可以打开⽂件看到详细的操作记录
2.3 两者优缺点
2.3.1 RDB 存在的优势及缺点
⼀旦采⽤该⽅式,redis的数据库将只包含⼀个⽂件,这对于⽂件备份是⾮常好的
对于灾难恢复⽽⾔,RDB是⾮常不错的选择,
如果数据集偏⼤,RDB的启动效率会⽐AOF⾼
缺点:
数据安全性能低,(RDB 是间隔⼀段时间进⾏持久化,如果持久化之间redis发⽣故障,会造成数据丢丢失)
由于RDB是通过fork出⼦进程来协助完成数据持久化,因此,如果当数据集较⼤时,可能会导致整个服务器停⽌服务⼏百毫秒,甚⾄是1秒钟。
2.3.2 RDB存在的优势和缺点
数据安全性更⾼,AOF持久化可以配置appendfsync属性(每秒同步、每修改同步、不同步),其中always,每进⾏⼀次命令操作就记录到AOF⽂件中⼀次,
通过append模式写⽂件,及时中途服务器宕机,可以通过redis-check-aof⼯具解决数据⼀致性问题
如果数据⽇志过⼤,Redis可以开启rewrite机制,即Redis以aooend模式不断的将修改数据写⼊⽼的磁
盘⽂件中,同时Redis还会创建⼀个新的⽂件⽤于记录此时间内修改的内容。因此在进⾏rewriter切换时可以更好的保证数据安全性
可以通过⽇志⽂件,完成数据的重建
缺点:
对于相同数量的数据集⽽⾔,AOF⽂件通常要⼤于RDB⽂件,RDB在恢复数据集时的速度要⽐AOF快
更具同步策略的不同,AOF在运⾏效率上慢于RDB。
两者之间选择
AOF:牺牲性能、提⾼缓存⼀致性
RDB: 不启⽤备份来换取更⾼的性能,⼿动执⾏save,再做 备份。
2 安装部署单机版
2.1 下载
2.2 安装部署
解压到指定⽬录
在/usr/local/redis下创建bin etc var
bin 中存放redis-server redis-cli 等
etc 存放f
var 存放备份⽂件
2.3 修改配置⽂件
bind
修改为 0.0.0.0 允许外⽹连接
daemonize yes 允许后台运⾏
2.4 启动服务
在bin⽬录下
.
/redis-server …/f
3 主从模式搭建
3.1 搭建前准备
⾸先在每⼀个节点都安装redis单机版
修改master和slave配置
3.2 master配置
master:10.121.22.10
slave:10.121.22.11
bind 0.0.0.0
port 6379
logfile /usr/local/redis/log/redis.log
dbfilename dump.rdb
daemonize yes
rdbcompression yes
3.3 slave配置
bind 0.0.0.0
port 6379
logfile /usr/local/redis/log/redis.log
dbfilename dump.rdb
daemonize yes
rdbcompression yes
slaveof 10.121.22.10 6379
启动各个节点的redis服务,即可完成主从模式的搭建
4 哨兵模式
4.1 简单介绍
sentinel是特殊的redis服务,不提供读写服务,主要⽤来监控redis实例节点。
哨兵模式中,只有在哨兵集可⽤的情况下,这时候 启动服务并且使⽤redis服务是可以的,
如果应⽤服务已启动,在使⽤过程中,sentienl集挂了,但redis的主从模式正常,这时候仍然可以使⽤redis服务,但如果此时将应⽤服务重启,则不能通过sentinel来访问redis服务。
4.2 搭建过程,三节点
先搭建⼀个⼀主⼆从的主从模式,配置⽂件的和第三节相同
4.2.1 sentinel配置⽂件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。