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重新恢复启动之后,将作为从机挂载到新主机上