zoukankan      html  css  js  c++  java
  • redis 基本操作命令

    redis 基本操作

    String

    操作字符串

    • 1 SET key value 设置指定 key 的值
    • 2 GET key 获取指定 key 的值。
    • 3 GETRANGE key start end 返回 key 中字符串值的子字符
    • 4 GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
    • 5 GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的 位(bit) [0/1]
    • 6 MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。
    • 7 SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
    • 8 SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
    • 9 SETNX key value 只有在 key 不存在时设置 key 的值。
    • 10 SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
    • 11 STRLEN key 返回 key 所储存的字符串值的长度。
    • 12 MSET key value [key value ...] 同时设置一个或多个 key-value 对。
    • 13 MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
    • 14 PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
    • 15 INCR key 将 key 中储存的数字值增一。
    • 16 INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。
    • 17 INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。
    • 18 DECR key 将 key 中储存的数字值减一。
    • 19 DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。
    • 20 APPEND key value 追加key 值

    操作字节bit

    直接操作二进制位

    • setbit k1 1 1

    设置k1 二进制位 第2位是 1

    0 1 代表俩个字节

    • bitpos k1 1 0 0

    二进制位1在 k1 从 字节 0 到0 的位置

    • bitcount k1 0 1

    k1 从字节0到1 的位置 1 出现的次数

    • bitop and/or keyNam k1 k2

    k1 和k2 的或与运算放在keyname上

    应用场景

    1.记录一年中的登陆次数

        setbit sean  1   1      第一天登陆了
    setbit sean 7   1 第七天登陆了
    setbit sean 365 1 第365天登陆了
    strlen sean 多少个字节
    bitcount sean 0 -1

    2.统计活跃用户 (用户id和二进制位做关联)

        setbit   20190101  1   1    1月1号编号位1的用户登陆了
    setbit   20190102 1   1 1月2号编号位1的用户登陆了
    setbit   20190102 7   1 1月2号编号位7的用户登陆了
    •   bitop or destkey 20190101 20190102 按位与运算
    •   bitcount destkey 0 -1   统计俩天之内的活跃用户

    list

    有序 可重复

    • lpush 从左边加入
    • rpush 从右边加入
    • lpop 从左边弹出
    • rpop 从右边弹出
    • lrange 从左边取值 【正负向索引】
    • LINDEX 取索引为
    • Lset k1 3 a 设置4位置的值为a
    • LREM k1 2 a 移除k1的2个a 【2为正数删除前俩个,负数删除后俩个】
    • linsert k1 after 6 a 在元素6后面插入a
    • blpop 阻塞弹出【单播队列】
    • lrange k2 2 -2 删除从2 到-2 俩端的元素

    hash

    • set sean::name 'test'
    • set sean:age 12
    • get sean::age
    • get sean*

    以上成本太高

    • hset sean name test
    • hmset sean get19 address bj
    • hget sean name
    • hmget sean name age
    • hkeys sean 键值
    • hvals sean Z所有值
    • hgetall sean 获取所有
    • hincrbyfloat sean age 05 {age 加0.5}
    • hincrbyfloat sean age -1

    set

    无需 不可重复

    • sadd k1 a b c d e a 增加
    • srem k1 a b c 删除
    • smembers k1 c 查看所有
    • sinter k2 k3 交集
    • sinterstore res k2 k3 交集存到res
    • sunion k2 k3 并集 【可以带store】
    • sdiff k2 k3 差级 前减后
    • srendmember count 随机

        count为正数,取出一个去重的结果集(不能超过已有集)

            负数,取出一个带重复的结果集,一定满足需求

    • spop 随机弹出1个

    sorted_set

    去重 有序 物理内存左小右大{不随命令变化}

    • zdd k1 8 a 6 b 5 c
    • zgange k1 0 -1 withsores
    • zrengebyscode k1 3 9
    • ZrevRenge k1 0 1 倒序取
    • zscode k1 apple 根据元素取分值
    • zrank k1 a

    实现方式 :跳表

     

    管道

    通信成本变低

    echo -e "set k1 99 incr k2 get k2 " | nc localhost 6379

    发布订阅

    publish guandao hello 发布

    subscribe guandao 接收(监听之后才能收到)

    事务

    multi 事务编写

    exec 事务开始执行

    watch 监听key是否发生变化

    多个client 发来事务请求, 谁的exec先来 谁先执行

    几个小知识点

    redis key的有效期

    • redis 过期时间不会随着访问延长
    • redis 发生写,会剔除过期时间
    • 倒计时,且 redis 不能延长

    redis key的过期判原理

    • 被动访问判定
    • 主动周期轮训判定 10s随机去20个key 进行过期检测,过期则删除, 如果多于25%,则继续随机轮训

    redis 淘汰冷数据

    redis 内存是有限的,随着访问的变化,应该淘汰掉冷数据

    • redis 内存设置 maxmemory 1-10G左右

      常用的俩个淘汰策略

    • 淘汰策略 LFU 碰了多少次
    • LRU 多久没碰

     

  • 相关阅读:
    浅谈Lyndon分解
    【CF914G】Sum the Fibonacci(FWT)
    【洛谷6914】[ICPC2015 WF] Tours(非树边随机边权,树边边权异或)
    【洛谷7143】[THUPC2021 初赛] 线段树(动态规划)
    【洛谷7325】[WC2021] 斐波那契(数论)
    【CF666E】Forensic Examination(广义后缀自动机+线段树合并)
    【CF685C】Optimal Point(二分答案)
    【洛谷7364】有标号二分图计数(多项式开根)
    【CF679E】Bear and Bad Powers of 42(ODT+线段树)
    【洛谷5307】[COCI2019] Mobitel(动态规划)
  • 原文地址:https://www.cnblogs.com/zhixinSHOU/p/13220545.html
Copyright © 2011-2022 走看看