zoukankan      html  css  js  c++  java
  • Redis的 string类型&bitmap

    redis的 string类型&bitmap

    String 类型

    下面这些string类型命令 都可以用 help @string 查看 并且有解释意思

    1.进入进程的基本命令

    • 基本命令行 进入进程 启动redis **redis-cli -p **
    • set k380:1 hello 存入一个值“hello”
    • get k380:1 获取值 k380:1 得到hello
    • select 8 进入八号库
    • 再次获取 get k380:1 得到(nul) 空

    ![](https://img-1303875574.cos.ap-nanjing.myqcloud.com/img/get 和set K.png)

    • exit 退出当前进程
    • redis-cli -p 6379 -n 8 进入进程的时候直接选定进入八号库
    • 如果存入的值是中文,那么在客户端连接服务器时可以使用 redis-cli -raw
    • 清除所有key FLUSHDB

    2.key 字符串的基本操作

    单个key的创建和插入
    • 查看当前进程内的所有key :**keys ***

    • set k1 ooxx nx

    • get k1

    • set k1 hello nx

    • get k1

    • set k1 hello xx

    • get k1

      代码解释:

    • 创建一个新的key 名叫k1 加入值 ooxx 成功

    • get k1 获取k1的值 得到ooxx

    • set k1 hello nx 想要更改k1 的值为hello 失败(nil)

    • get k1 值没变 还是ooxx

    • 使用xx :set k1 hello xx 可以发现k1的值由ooxx变成了hello

    • 结论: set key value nx 和set key value xx ,nx只能用于创建而不能用于更新 更新用xx

    处理多个key

    • mset k1 value1 k2 value 2

    • mget k1 k2

    • 处理多个key的时候就可以使用 mset 和mget

    key的数据追加和获取

    • APPEND key名 ”追加的数据“

    • GETRANGE key名 开始位置 结束位置 , 位置是从0开始数空格算1个

    • 如果结束位置是最后 可以把结束位置得到值写成 -1

    • 如果想把数据全部获取 开始位置为0 结束位置为-1

    key的数据覆盖

    • SETRANGE key名 开始位置 新value
    key的获取长度

    STRLEN key名

    key值的新旧替换

    • getset key名 新value
    • 此命令也可以用于创建 但不会返回旧值

    3.key 的类型操作

    显示数据类型

    • OBJECT encoding key
    增加和减少

    • incr key名 ,值+1
    • incrby key名 num , 值+num

    • decr key名 ,值-1
    • decrby key名 num ,值减num
    • incrbyfloat key名 num ,此处的num是小数

    4)-原子性操作

    解释:

    1.我们msetnx 创建了两个key 分别是k1 k2 并且分别给了a b两个值

    2.mget k1和k2 得到a b 没什么问题

    3.当我们再msetnx k2 c k3 d 的时候问题就出现了 因为我们前面提到了 nx只能用于创建

    而此处的k2 已经存在b 值了 所以 这一命令到了k2这一步就停止了 k3不会被创建

    4.所以担当我们mget k1 k2 k3 的时候 k1 还是a k2没有更改成功 还是b 而k3压根就没有创建成功

    bitmap

    统计用户登录

    解释:

    • 因为运算是从0开始 所以 1是第二天 第一句 表示我第二天等陆了
    • 同理 7表示我第六条登录了
    • 364 表示我第365天登录了
    • strlen sean 因为八个字节算1位 所以 365天 (365➗8=45.***)使用46个位足够
    • 最后一句是统计 倒数第一天和倒数第二天登录了几次 返回值是1(只有365那天登录了)

    检测活跃用户(面试常考)

    解释:

    • 第一天 就是20190101这天 我(1) 登陆了一次

    • 第二天 就是20190102这天 我(1) 登录了一次

    • 还是第二天 20190102这天 张三(7) 登录了一次

    • 第三天 20190103这天 王五(4) 登陆了一次

      此时 我要算一下1 2 3 号这三天的活跃用户数量

    • bitop or deskey 20190101 20190102 20190103

      destkey是目标key 这个or是逻辑或算法

    • 最后 把这个目标key统计出来 结果是3 (我,张三 ,李四)

  • 相关阅读:
    pip 最新版 发布(Python包安装和管理工具)
    Python使用cookie 免密登录了解一下
    夯实根基,必知必会的 Python 基础知识
    10个关于文件操作的小功能,都很实用~
    总结一些网站加密和混淆技术
    接口加密如何测试?
    艰难的这年,程序员的未来在哪里?
    警惕“职场PUA”!
    Python面试题及答案汇总
    Python实例练手项目汇总(附源码)
  • 原文地址:https://www.cnblogs.com/beizhai/p/13796307.html
Copyright © 2011-2022 走看看