redis随便写点

  字符串
    keys *
    exists
    del
    type
    get
    set
    incr key
    incrby key n
    decr
    decrby
    incrbyfloat 没有floatdecr,但是可以负数
    append
    strlen
    mget key key…
    mset key v k v …
    getbit key n 从右到左第几位,0开始
    setbit key n 0/1
    bitcount key 1多少个
    bitcount key start end 左右包含
    bitop AND/OR/XOR outkey inkey1 inkey2
    bitop NOT outkey inkey1
    bitops key 0/1 右到左第一个0或1的索引,0开始
    bitops key 0/1 start end

  哈希
    一个哈希key下有多个字段field
    hgetall key 打印这个key下所有的field和value
    hkeys key 只打印键下的所有field
    hvals key 只打印键下的所有value
    hget key field
    hset key field value
    hsetNx key field value 将hexists和hset合并,感觉一样
    hmget key field field
    hmset key field value field value
    hexists key field field是否存在,0不存在,1存在 如要判断key本身是否存在则是exists
    hexists key field value field不存在时赋值
    hincrby key field value hash表某个field自增任意值
    hdel key field field 删除多个field

  列表(双向链表)
    索引0开始是从左到右
    索引-1开始是从又到左, -1代表最后一个,-2代表倒数第二个
    lpush key val1 val2… 返回插入后的长度
    rpush key val1 val2…
    lpop key 返回结果是弹出的值
    rpop key
    brpop key1 key2… second
      队列空就一直阻塞等待,传0表示一直等待,否则等待对应秒
      等多个键,如果同时都有,从左到右优先级
    llen key 长度
    lrange key strat stop 打印某个区间内的所有值,左闭右闭,0 -1即打印整个表
    ltrim key start stop 只保留区间内的元素,左闭右闭
    lrem key count value
      删除表中前count个值为value的元素,返回实际删除个数,
      count为0时删除所有
      为负数时从右边开始删
    lindex key index 根据索引取值
    lset key index value 根据索引设置值
    linsert key before|after val1 val2 在val1之前或之后插入val2,从左到右找
    rpoplpush srcKey destkey 将src最右边的元素移到dest左边,如果src==dest,则从队尾移到队首

  集合(hash表)
    smembers key 打印key里面的所有元素
    scard key 元素数量
    sadd key val1 val2… 插入元素,返回成功插入几个
    srem key val1 val2… 删除元素,返回删了几个
    sismember key val1 判断是否在集合中
    vspop key 随机弹出一个
    srandmember key [count] 随机返回一个,如果传了count,正数返回不相同的count个,负数返回|count|个可能相同的
    sdiff key1 key2 key3 差
    sinter key1 key2 key3 交
    sunion key1 key2 key3 并
    sdiffstore destkey key1 key2 key3 差,结果存到destkey
    sinterstore destkey key1 key2 key3 交,结果存到destkey
    sunionstore destkey key1 key2 key3 并,结果存到destkey

  有序集合(hash+跳表)
    每个成员都是[分数, 元素本身]的形式
    多个分数相同的按编码排
    插入元素相同,分数被更新
    zcard key 元素个数
    zcount key min max 分数范围内的元素个数
    zadd key score member 插入分数和元素,可一次多组,分数值可以是+inf和-inf,表示正负无穷
    zscore key member 获取某个元素的分数
    zrank key member 元素排多少名
    zrevrank key member 反向排名,需要注意:排名是从0开始的
    zrem key member 根据元素名删
    zremrangebyrank key start end 根据排名范围删
    zremrangebyscore key min max根据分数范围删
    zrange key start end [withscores] 返回范围内的元素,注意这里的strat和end是索引而不是分数值
      withscores还会打印元素对应的分数值
    zrevrange key start end [withscores] 这个是从大到小,前面的是从小到大
    zrangebyscore key min max [withscores] [limit offset count]
    zrevrangebyscore key max min [withscores] [limit offset count]
      这个是根据分数值的返回返回元素,min max都包含
      还可以:80 (100, 加括号表示不包含,也可以 80 +inf
      limit是从第offset个开始的count个
    zincrby key n/-n member 给某个成员增加减少分数

  
    每流里面的每个元素可以包含多个键值对,并且只在末尾追加
    xlen key 长度
    xadd key [maxlen ~ n] id field1 val1 field2 val2
      其中manxlen代表插入后保留n条最新的,不带是精确条数,带时条数模糊多一点,提高性能
      id,可以自己写,也可以用星号代替,id的格式是[unix时间戳-这个时间戳的第几条],使用*时,该命令的返回值是id
    xtrim key maxlen ~ n 同上
    xrange key start end [COUNT count] 可以是xrange key - +来打印全部的内容
    xrevrange key start end [COUNT count]
    xdel key id 根据id删

  事务
    mulit // 表示开始一个事务
    要执行的多条命令 // 命令发到服务器暂存
    exec // 开始执行事务,对于每一行命令,都会返回一行对应的执行结果
      遇到语法错误,因为可以提前发现,所有语句都不会执行
      遇到运行错误,错误之前的已执行命令《不会》回滚
    watch key
    unwatch key
      作用是监控某个key,如果key被修改,阻止接下来的事务执行
      在比如说在执行mulit之后,exec之前,其他用户改了

  过期时间
    expire key second 时间是秒
    ttl key 键还剩多少秒,已经过期的返回-2,没设置过期的返回-1
    persist key 键设为永久,SET和GETSET命令也会导致键的过期时间被清除,恢复永久
      键超时删除,watch<不会>认为其被改变

  sort排序
    sort key asc|desc 默认只能排全数字的集合
      有序集合则会忽略分数字段,对值本身排
      四个可选参数LIMIT、BY、GET、STORE
      LIMIT off count 从第几个开始,打印几个
      BY 不按值本身,二十根据另一个键中的字段排序,而且by后面的东西必须带星号
        比如:sort key by num*
        会把key中的每个值替换到星号,形成num1、num2…,然后去根据键num1、num2的值排序
        另外如果是hash键,还会有hashkey*->field,取hash某个字段来比较排序
        但是,星号必须要在->前面
      GET get是返回哪些列,如果有多个get,每个元素就会对应返回多个列
        如:GET hashkey*->title BY hashkey*->id
        GET # 则代表元素本身
      STORE 排序结果存到哪,同前

  持久化
    RDB:保存数据副本
    需要在配置文件中写规则,save 300 1,表示300秒内修改10次就备份
    SAVE:阻塞所有客户端命令保存快照
    BGSAVE:异步保存,使用fork的子进程去写快照文件,而因为写时复制,子进程也不会导致内存翻倍
    flushall,清空redis,如果配置文件有规则,才会写快照文件
  AOF:保存执行的命令
    命令文件过大时,会导致重写文件清除冗余命令
    命令文件保存在操作系统的缓存中,何时写入硬盘基于:appendfsync always|everysec|no
    分别是每个命令都重写|一秒一次|操作系统控制何时写入

  主从
    redis-server // 默认6379启动
    redis-server -port 6380 --slaveof 127.0.0.1 6379 // 作为6379的从数据库启动

    redis-cli // 默认进6379
    redis-cli -p 6380 // 连指定服务器
    命令:info replication 打印服务器西信息,地址,角色主从\之类的

  哨兵
    用来监控主从,当主库进程死掉,推选从库提升到主库
      sudo apt-get install redis-server
      sudo apt-get install redis-sentinel
    安装后会自动运行对应实例,并且kill命令杀死后会重启,停止方法是:
      sudo /etc/init.d/redis-server stop
      sudo /etc/init.d/redis-sentinel stop
    启动哨兵实例需要配置文件,配置文件中说明了监控哪个redis实例,以及实例消失掉多久后推选从库变为主库
    一个哨兵可以监视多个哨兵和redis实例,一个redis实例也能被多个哨兵监视
    1.首先启动一主二从的库:
      redis-server
      redis-server -port 6380 --slaveof 127.0.0.1 6379
      redis-server -port 6381 --slaveof 127.0.0.1 6379
    2.配置文件:名字.conf
      sentinel monitor 随便起的一个名字 127.0.0.1 1 6379 1 # 1表示有多少个哨兵同意后才推选其成为主库
      sentinel down-after-milliseconds 上一行起的名字 60000 # 主库消失多久后开始推选
      # 配置文件只写主库的就可以了,哨兵连到主库后,会用info命令拿到从库的信息
    3.启动哨兵
      redis-sentinel 名字.conf
      # 需要出现+slave等字段才说明监视成功
      # 主库A消失后,从库B变成主库,A又出现,A是B的从库
      # 配置文件不知道什么原因可能被哨兵还是redis实例修改,没具体了解,最好启动时从某处复制一份再启动

  集群
    键的分配:所有的键都会经过crc16求hash,然后求余16384得到一个槽id,所以一共有0-16383个槽
    槽的分配:集群创建时,16384个槽,分配个每个节点,命令操作键,会先找键在哪个节点,然后去对应节点上找,
    每个节点最好有一个从库,如果节点死掉,至少可以从从库恢复,而不导致键丢失
    关于键的迁移就不写了
      1.每个实例对应的配置文件中:cluster-enable yes,然后启动
      2.创建集群:redis-cli --cluster create --cluster-replicas ip1:port1 ip2:port2 …
      3.新增集群节点:cluster meet ip port

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值