redis

cd /usr/local/bin/
redis-server /myconf/redis.conf
redis-cli -p 6379

keys *
dbsize
flushdb flushall 清除
exists key 是否存在
move key db (有16个库 move 移动key到其他库)
expire key time 设置到期时间
ttl key 查看剩余时间 (-1永久,-2已过期)
type key 查看类型
—string-----
set
get
del 删除
append 从后增加
strlen string类型长度
incr 加一(数字)
decr 减一(数字)
incrby key num 加num (数字)
decrby key num 减num (数字)
getrange key n1 n2 截取字符
setrange key n ‘xxx’ 从n开始替换
setex key time value 分配值并设置到期时间
psetex key time value 毫秒级别,同setex 相似但是是毫秒级别。
setnx key value 判断是否存在key 不存在则设置,存在则不操作
mset k1 v1 k2 v2 k3 v3 设置多个值
mget k1 k2 k3
msetnx 设置多个值并判断是否存在

----list-----
lpush key v1 v2 v3 从左侧插入
rpush key v1 v2 v3 从右侧插入
lpushx key v key key不存在时不操作
lrange key n1 n2 显示从n1开始到n2的值
lpop key 左侧出栈
rpop key 右侧出栈
lindex key num 根据索引下标得到值
llen key 长度
lrem key n value 删除n个value值 n小于0 从后开始数 n等于0 删除全部
ltrim key n1 n2 截取key中从n1开始的n2个值 赋值给key
rpoplpush key1 key2 从key1后面取一个值放到key2前面
lset key index value 下标值替换
linsert key before/after v1 v2 在V1前面或者后面插入V2

----hash-----KV模式不变 V 是一个键值对
hset key k v 设置值
hget key k 获取值(相当于key[k])
hmset key k1 v1 k2 v2 k3 v3 设置多个值
hgetall key 获取所有值
hdel key k 删除
hlen key
hexists key 是否存在
hkeys/hvals 查找所有的key 或者value
hincrby key k 自增
hincrbyfloat 自增浮点型
hsetnx key k v 是否存在 不存在则添加

-----set--------单值多value
sadd key v1 v2 v3 设置值但是不重复 重复的话只录入一个
smember key 查看成员
sismember key 查看是否存在
scard key 获取个数
srem key value 删除集合中的元素
srandmember key n 随机出n个数字
spop key 随机出栈
smove key1 key2 key1的值赋值给key2
sdiff key1 key2 差集
sinter key1 key2 交集
sunion key1 key2 并集

----zset-------- 键值对 但是带score
zaddd key s1 v1 s2 v2 (v两个是一个整体) key 为键, v1 ,v2 为值 s1 s2 是score
zrange key 0 -1 得到 v1 v2
zrange key 0 -1 withscores 得到全部
zrangebyscore key sm sn [ limit x y ] 根据score 得到 sm到sn之间的v
zrem key v 删除
zcard key 统计个数
zcount key sm sn
zrank key vn 获取下标
zscore key vn 获取分数scroe
zrevrank key vn 逆序获取下标
zrevrange key 0 -1 逆序获取分数scroe
zrevrangebyscore key sn sm 从结束分数到开始分数 于zrangebyscore 相反

string 单KEY 单value
hash 键值对
list 底层是链表
set 无序无重复集合
zset 排序的set 在前面关联一个分数

命令查询地址:http://redisdoc.com/

配置文件:

持久化:
rdb (redis database)
修改配置文件的位置:SNAPSHOTTING 快照设置 时间轮片

数据保存:保存的是dump.rdb文件  主机和备机是两台机器
	save 命令可以保存  只管保存 全部阻塞
	bgsave 后台异步操作
	flushall 保存的是空的。没有任意义
数据恢复:
	dump.rdb文件 放到安装目录 并从新启动redis

rdb 持久化 在flushall 并关机shutdown 的时候会生成一个空的rdb文件。此时的文件不能用于数据恢复。因此要;定时写备份

优势:大规模数据 , 对数据的完整性和一致性要求不高
劣势:最后一次的数据可能不会保存 ,fork的时候 内存数据被克隆一份,2倍的膨胀性。

aof (append only file)
以日志的形式来记录每个‘写’操作,只需追加文件 不许修改文件
配置文件位置: APPEND ONLY MOOD
因为忠实纪录的原因 如果在命令中写了flushall(通常不会有人这么做),记录中也会记录该句 所以在重启,恢复的时候还是有flushall的操作
rbd,aof同时存在的时候 先加载的是aof
如果aof文件中有错误的命令,比如写入aof文件的时候突然断电。 会出现不符合语法规范的记录。此时:
使用/usr/local/bin/redis-check-aof --fix /myconf/redis_aof.conf 将不符合规范的删除掉

rewrite 重写机制:只追加会导致越来越大。  
默认状态是:文件大小大于 64M(实际生产最少3G)且是上次重写的一倍。

用哪个:数据多 快速回复备份,数据一致性要求不高。rdb
官方建议 同时开启 优先载入 aof

事务:
multi 开始事务
discard 取消事务
exec 执行事务
watch 监控(类似乐观锁),如果该值被监控,而其他程序修改该值,那么该值在监控的程序中的操作会报错。
unwatch 报错后 使用unwatch 取消监控 在重新监控并进行操作。

***当命令直接出现error错误的时候 所有事务中的命令都不执行
***当命令没有直接出现错误提示,但是该条命令不能执行时,只有这一条能执行,其他的照常。

watch 监控
乐观锁,悲观锁,CAS(check and set)
悲观锁:
乐观锁:在每条记录的后面加一个version(版本号),提交版本大于当前版本才能修改
行锁
表锁
叶锁
并发性,一致性不能同时存在

redis 的发布和订阅机制

master/slave 主从复制
读写分离, 容灾恢复
1:配从不配主 从机配置:salveof 主库IP 主库端口

info replication 查看信息
slaveof 主机IP 主机端口 备份主机 如果从机断开 就需要重新连接 除非修改配置文件

一主多仆, 中心化太严重
薪火相传, 去中心化
逆袭上位, slaveof no one

哨兵模式: 如果故障自动调整从库到主库。
touch sentinel.conf 新建哨兵配置文件
顶头写: sentinel monitor name ip port ticket
ticket 表示主机挂掉后 slave 投票 谁的票多谁变成主机
redis-sentinel /myconf/sentinel.conf
复制延迟

复制的原理:首次是,全量复制。此后是增量复制。

测试连通性,
事务:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值