redis 学习笔记

redis 基本知识:

测试redis服务性能 redis-benchmark
查看redis服务器的统计信息: info 查看redis服务的所有统计信息
info[信息段] 查看redis服务器指定统计信息,如 info replication
查看当前实例库中有多少key数量: dbsize
查看当前实例库中有所有key: key *
清空当前数据库:flushdb
清空所有数据库:flushall
查看redis所有配置信息: config get *
查看redis指定配置信息: config get parameter

5种数据结构

程序是用来处理数据,redis数据库是用来存储数据的:不同数据放到不同类型的数据结构中
字符串 --------------String 单key:单value
list列表 有顺序------list 单key:多有序value key:value1,value2,value3
set集合 没有顺序----set 单key:多无序value key:value1,value2,value3
对象-----------------hash 单key:对象(属性:值)key:属性名1:属性值1,属性名2:属性值2,属性名3:属性值3
set升级版添加排序-----zset 单key:多有序(添加参考值作为排序) city: 2000 bj,2500 sh,1000 tj,1500 cq (默认按参考值排序2500,2000,1500,1000)

redis key 操作命令:
keys pattern
exists key [key key]
移动指定key到指定数据库:move key index
查看指定key剩余生成时间: ttl 如:ttl key1
切换key从时效性转换为永久有效: persist key
设置key的最大生存时间:expire key seconds 如:expire key1 20
查看指定key数据类型: type key
重命名key: rename key newkey
删除key: del key[key1,key2,key3]
-----------有关string类型数据操作命令----------------
追加字段串: append key value
获取字符串长度: strlen key
将字符串数值进行加1运算: incr key
将字符串数值进行加offset 运算: incrby key offset 如:incrby key 10
将字符串数值进行减offset 运算: decrby key offset 如:decrby key 10
截取字符串:getrange key srartIndex endIndex
用value覆盖从下标为startIndex 开始的字符串:setrange key startIndex value
设置字符串数据同时设置最大生命周期: setex key seconds value 如setex key 20 value
设置字符串类型数据,当key 不存在时设置成功,key存在则放弃: setnx setnx key value
批量设置String类型数据: mset key1 value1 key2 value2 key3 value3
批量获取:mget key1 key2 key3
批量设置,且不覆盖:msetnx
------------------------有关list类型数据操作命令-------------------------------------
将一个或多个值依次插入到列表的表头(左侧)lpush key value [value2 value3 …]
获取指定列表中指定下标区间的元素:lrange key startIndex endIndex
将一个或多个值依次插入到列表的表尾(右侧)rpush key value [value2 value3 …]
从指定列表中移除并且返回表头元素: lpop key
从指定列表中移除并且返回表尾元素: rpop key
获取指定列表中指定下标的元素: lindex key index
获取指定列表长度: llen key
根据count值移除指定列表中跟value相等的数据: lrem key count value
------------------------有关set类型数据操作命令-------------------------------------
将一个或多个元素添加到集合中:sadd key value[value2 value3 value4…]
获取指定集合中所有元素: smembers key
判断指定元素在指定集合中是否存在: sismember key member
获取指定集合的长度: scard key
移除指定集合中一个或者多个元素:srem key member[member …]
随机获取指定集合中的一个元素:srandmember key [count] count>0获取count个元素不能重复 count<0 获取多个元素可能重复
从指定集合中随机移除一个或者多个元素:spop key[count]
将指定集合中的指定元素移动到另一个集合:smove source dest member 如:smove key1 key2 member
获取一个集合中有但是其他集合中都没有的元素组成的新集合(差集):sdiff key key[key key]
获取交集:sinter key key[key key]
获取并集:sunion key key[key key]
----------------------------有关hash类型数据操作命令----------------------------------------------
将一个或者多个field_value对设置到哈希表中:hset key field1 value1[field2 value2 field3 value3…] hset stu01 id 001 name zhangsan
将多个field_value对设置到哈希表中:hmset key field1 value1[field2 value2 field3 value3…] hmset stu01 id 001 name zhangsan
获取指定哈希表中指定field的值: hget key field
批量获取指定哈希表中指定field的值: hget key field [field2 field3 …]
获取指定哈希表中所有的field和value :hgetall key
从指定哈希表中删除一个或者多个field: hdel key field[field2 field3]
判断指定哈希表中是否存在某一个field: hexists key field
获取指定哈希表中所有的field列表: hkeys key
获取指定哈希表中所有的value列表: hvals key
对指定哈希表中指定field值进行运算: hincrby key fiedl int
将一个field-value对设置到哈希表中,当key-field已经存在时,则放弃设置:hsetnx key field value
----------------------------有关zset类型数据操作命令------------有序集合----------------------------------
将一个或者多个member及其score值加入有序集合: zadd key score member[score member …]
获取有序集合中指定下标区间的元素:zrange key startIndex endIndex [withscore]
获取指定有序集合中指定分数区间的元素:zrange key min max [withscore]
删除指定有序集合中一个或者多个元素: zrem key member [member …]
获取指定有序集合中所有元素的个数:zcard key
获取有序集合中指定区间内的元素个数: zconut key min max
获取有序集合中指定元素的排名: zrank key member
获取有序集合中指定元素的分数: zscore key member
--------------------------------redis 配置文件---------------------------------------------
关于网络配置:
redis 根目录下提供redis.conf配置参数,可以配置一些redis服务端运行时参数,如使用配置文件,在启动时必须指定使用的配置文件
redis 配置文件中关于网络的配置:
port:端口
bind:配置客户端连接redis服务是,所能使用的ip地址,默认可以使用redis服务所在主机上任何一个ip都可以,
一般情况下都会配置一个ip,而且通常是一个真实的ip.
tcp-keepalive: TCP连接保活策略
常规配置:
loglevel:日志级别
logfile:指定日志文件
databases:设置创建数据库实例个数
---------------RDB AOF 持久化配置----------------------------
1、RDB(Redis DataBase)策略:在指定时间间隔内,redis 服务执行指定次数的写操作,会自动触发一次持久化操作。RDB是redis默认的持久化策略。通过执行save、bgsave指令保存数据(可以通过设置条件自动执行save指令)(缺点最后的数据容易丢失)快照形式
2、AOF(append only file)策略:采用操作日志记录进行每一次写操作。每次redis服务开启时,都会重新执行一遍操作日志,达到恢复数据作用。(缺点效率低)
客户端指定发送给redis服务端,会先放到缓冲区,然后按照制定规则,保存到AOF文件(写数据的三种方式always,ererysec,no)
appendonly:配置开启AOF,yes表示开启
appendfilename:AOF保存文件名
appendfsync:AOF异步持久化策略
always:同步持久化,每次发生数据变化会立刻写入到磁盘中(性能差,完整性好)
everysec:出厂默认推荐,每秒异步记录一次(建议使用,也是默认配置)
no:不即时同步,由操作系统决定何时同步
no-appendfsync-on-rewrite:重写时是否可以运用appendsync,默认no,可以保证数据安全性
auto-aof-rewrite-percentage:设置重写的基准百分比
auto-aof-rewrite-min-size:设置重写基准值
-----------------redis 的事务---------------------------------------------
redis的事务:允许把一组redis命令放在一起(一个队列),把命令进行序列化,然后一起执行,保证部分原子性。(最求效率,简化事务)
1)multi:用来标记一个事务的开始。 multi set k1 v1 set k2 v2
2)exec:用来执行事务队列中所有命令。
3)redis的事务只能保证部分原子性:
a)如果一组命令中,有在压入事务队列过程中发生错误命令,则本事务所有命令都不执行,能够保证原子性
b)如果一组命令中,有在压入事务队列过程中正常,在执行事务队列命令时发生错误,则只会影响错误命令行,不影响其他命令行,不能够保证事务原子性
4)discard:放弃事务,清楚所有已经压入队列的命令,并且结束整个事务
5)watch:监控某一个键,当事务在执行过程中,此键代码的值发生变化,则事务放弃执行,否则正常执行。
6)unwatch:放弃监控所有键
-------------------redis 删除策略-------------------------
到期数据并非及时删除的:
数据删除策略:是删除超时的数据, 定时(到时候就删除)、惰性(下次访问的时候删除)、定期(内存随即清理)
数据逐出策略:是数据库满了,删除数据 1可能过期的,2挑选最近使用最少,3最长时间没有被使用

--------------------------redis消息的发布订阅-------不会用到---------------------------------
redis客户端订阅频道,消息的发布者往频道上发布消息,所有订阅此频道的客户端都能够接收到消息
1)subscribe:订阅一个或者多个频道的消息。 subscribe ch1 ch2 ch3
2)publish: 将消息发布到指定频道 publish ch1 hello

----------------redis 主从复制------------------------
主机数据更新后根据配置和策略,自动同步到从机的master/slave机制,master以写为主,slave以读为主。
主从复制工作流程:建立连接
数据同步
命令传播

搭建一主二从redis集群:
1)搭建三台redis服务: 提供三份redis配置文件:redis6379.conf\redis6380.conf\redis6381.conf
port:6379
pidfile:
logfile:
dbfilename:
2)查看三台redis服务在集群中的主从角色:
info replication
3)设置主从关系:设从不设主
在6380上执行:slavof 127.0.0.1 6379
在6381上执行:slavof 127.0.0.1 6379
4)数据从master复制到slave
全量复制:一旦主从关系确定,会自动把主机上已有的数据同步到从库
数据库同步阶段工作流程: 1、slave 发送psync2 2、master执行bgsave, 创建缓冲区,生成rdb文件,通过socket发送给slave
部分复制:在全量复制同时,新的命令进入缓冲区,当rdb恢复完成时,slave再次发送命令告知master,master 发送复制缓冲区信息给slave
命令传播阶段:实时同步数据 当master数据同步被修改后,导致主从数据不一样,此时主从同步到一致的状态,同步的动作称为命令传播
master将命令传给slave

5)增量复制:主库写数据会自动同步到从库
6)主写从读,读写分离
7)主机宕机:从机原地待命
redis-cli -h 127.0.0.1 -p 6379 shutdonw
8)主机回恢复:redis-server redis.conf
9)从机宕机:查看主从角色,主机少一个 从机
10)从机恢复后变为主机,必须重新设置主从关系
11)主机宕机,从机上位
从机从原来主机断开主从关系,再从机上执行:slaveof no one
重新设置主从关系
12)redis哨兵模式:主机宕机,从机上位的自动版。
a、搭建一主二从环境
b、提供哨兵配置文件sentinel.conf,并编辑sentinel_monitor dc-redis 127.0.0.1 6379 1 (1是票数,谁先得到,谁上位,dc-redis随便命名)
c、启动哨兵服务:redis-sentinel sentinel.conf
d、主机宕机,哨兵程序自动选择从机上位
e、主机重新恢复,哨兵会将原来主机转为从机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值