redis

一、五种基本数据类型和基本命令

>flushdb 清空当前库的数据

>flushall 清空所有redis库的数据

>select【db号】 选择第几号库

>dbsize  当前库有多少键

>keys *

>exist key

>move key db 移动key到指定的db

>expire key

>ttl key  -1表示永不过期 -2表示已过期

>type key 查看key的类型

一、String类型

>set/get/del/append/strlen

>incr/decr/incrby/decrby  一定要是数字才能进行加减

>getrange/setrange  setrange在设定的位置进行替换n个字符

      

>setnx(set with expire)键秒值/setnx(set if not exist)

>mset/mget/msetnx

>getset(先get后set)

      

二、list类型

>lpush/rpush/lrange 先进先出用rpush,先进后出用lpush lrange从0开始取值

>lpop/rpop  出栈

>lindex  按照索引下标获得元素(从上到下)

>llen 获取长度

>lrem key 删N个value eg:k1 1 1 1 2 2 2 3 3 3 >lrem k1 2 3 >1 1 1 2 2 2 3

    

>ltrim key 开始index结束index,截取指定范围的值后再赋值给key

>rpoplpush source destination源列表出栈目的列表入栈 

>lset  设置在指定key相应索引下的值

>linsert key before/after 值 插入的值 在key的前/后指定的值上插入想要插入的值

             

性能总结:它是一个字符串链表,left、right都可以插入添加

如果键不存在,创建新的链表

如果键已已存在,新增内容

如果键全移除,对应的键也就消失了

链表的操作无论是头还是尾效率都极高,但是假如是对中间元素进行操作,效率就很惨淡了

三、set

>sadd/smembers/sismember   sismember  是否包含某个值

>scard 获取集合里面的元素个数

>srem key value 删除集合中的元素

>srandmember key 某个整数(随机出几个数)

>spop key随机出栈

>smove key1 key2 在key1里面的某个值赋给key2

  

>sdiff/sinter/sunion  差集/交集/并集

四、hash(key  (k->v))

>hset/hget/hmset/hmget/hgetall/hdel

>hlen   k数量

>hexists key

>hkeys/hvals

>hincrby/hincrbyfloat

>hsetnx

  

五、在set基础上,加一个score值  (set是k1 v1 v2 v3)(zset是k1 score1 v1 score2 v2)

>zadd/zrange [withscore]

>zrangebyscore key 开始score 结束score

>zrem key 某score下对应的value值,作用是删除元素

  

>zcard/zcount key score区间/zrank key values值,作用是获得下标值/zscore key 对应值,获得分数

>zrevrank key values值,作用是逆序获得下标值

>zrevrange  逆序获取指定索引的值

>zrevrangebyscore key 结束score 开始score,注意值的书写,

二、主从复制

  2.1、启动三台服务器客户端(6379、6380、6381)

  三台redis服务器没有相互依赖,全部作为role:master

   2.2、配从(库)不配主(库),

   当从库配置了slaveof host port之后,从机就会将主机的内从全部拷贝一份过来(初始时全量,之后时增量复制),包括slaveof命令之前存在于主机的内容,从机的角色也变成了role:slave

 

 

   2.3、设置值的时候,从机报错,只有主机才能进行写操作,所谓读写分离

 

 

   2.4、当主机故障不能提供服务的时候,从机保持不变,依旧是role:slave角色,依赖的主机不变,当主机恢复后,依然遵从主从角色,

   2.5、当从机(80)因为故障挂机后,再次恢复,那么从机(80)就会变成role:master,这个时候需要再次进行配置,复制规则同上

   

 

 

   2.6、当从机由于故障原因不能提供服务,重启之后,变为role:master,执行命令>set zz zz1,但是当再次充当从机后,zz没有了,主要重连,全量复制

 

 

   2.7、薪火相传,可以将81从机认80为主机,但是80其实仍旧角色为slave,但是它下面挂载了81,这样可以减轻79的负担,但是产生了其他的问题,比如延时等

   2.8、反客为主,如果79主机挂掉了,80可以通过>slavefo no one使当前数据库停止与其他数据库的同步,转成主数据库

   2.9、哨兵模式

 

 

 

     2.9.1、首先创建sentinel.conf,内容如下,启动时使用的配置文件不再是安装reids自带的sentinel.conf

      数字1表示当master挂机后,slave进行选举票数大于1的当选master,另外一台就成为新master的slave

      >redis-sentinel sentinel.conf

 

    2.9.2、当6379机器故障了,sentinel会自动从从机中进行选举,当6379重新恢复启动之后,将作为从机挂载到新主机上

  

 

posted @ 2021-06-09 20:38  ffzzblog  阅读(35)  评论(0编辑  收藏  举报