• redis 字符串命令


    strings  字符串命令

    所有的key 为string 类型的key 及其value 进行操作

    set  key value                  #不存在就创建/存在就更改。在 Redis 2.6.12 以前版本, SET 命令总是返回 OK 。从 Redis 2.6.12 版本开始,SET在设置操作成功完成时,才返回 OK 。

    get key                       #Redis Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。

    getrange                       #命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在    内)

    redis 127.0.0.1:6379> SET mykey "This is my test key"
    OK
    redis 127.0.0.1:6379> GETRANGE mykey 0 3
    "This"
    redis 127.0.0.1:6379> GETRANGE mykey 0 -1
    "This is my test key"
    View Code

    getset key value                 #将给定 key 的值设为 value ,并返回 key 的旧值(old value)

    setbit key  offset 0/1

    get key  offset                  # 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0,对已存在的 offset 进行 GETBIT是0返回0是1返回1。

    解析如下:

    我们在登陆某些博客网站或者视频网站的时候,网站往往会记录我们是否阅读了某篇文章,或者是观看了某个视频。
    
    如果用传统的mysql数据库实现,如果用户数量多,文章和视频也多的情况下,那么则会给数据库带来很大的压力。
    
    而用Redis的GETBIT和SETBIT则会简单得多。
    我们以视频为例,我们用bitmap来记录用户们是否已经观看了某一个视频,一个视频对应一个bitmap。例如
    
    1
    2
    key:   video:1201
    value: 000000...0000
    key以视频英文名video+冒号+id标记。
    value就是一个bitmap。一位(bit)有两种可能,0或者1。0代表未看,1代表已经看过了。
    而位置(offset)代表的就是user id。例如第200位就代表user_id为200的用户是否观看过id为1201的视频。
    
    设置
    1
    2
    3
    4
    # SETBIT key offset value
     
    SET video:1201 200 1
    # 上面的命令就是设置ID为200的用户,已经看过了ID为1201的视频。
    查询
    1
    2
    3
    # GETBIT key offset
    GETBIT video:1201 200
    # 上面的命令就是查询ID为200的用户是否观看了ID为1201的视频
    当然您也可以一个用户对应一个bitmap,bitmap中的位代表一个视频是否已经被观看。
    
    另外文章中也将到目前非常流行的打卡或者是登陆记录也可以用相似的设计实现。
    例如用一个bitmap记录所有用户的登陆情况,bitmap中的一位代表一个用户当天是否有登陆,0代表没登陆,1代表有登陆。
    每天生成一个bitmap。
    
    通过统计多天bitmap就可以实现统计活跃用户之类的操作了。
    View Code

    mget   key1[key2...]               #获取所有(一个或多个)给定 key 的值。

    setex  key  seconds  value              #命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

    setnx(SET if Not eXists)            #命令在指定的 key 不存在时,为 key 设置指定的值。成功返回1,失败返回0。只有不存在才能成功

    setrange key_name offset value         #命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。

    可用版本
    >= 2.2.0
    
    返回值
    被修改后的字符串长度。
    
    实例
    redis 127.0.0.1:6379> SET key1 "Hello World"
    OK
    redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"
    (integer) 11
    redis 127.0.0.1:6379> GET key1
    "Hello Redis"
    View Code

     

    strlen  key_name                 #返回key存储的字符串的长度,字符串值的长度。 当 key 不存在时,返回 0。

     

    mset  key1 value1 key2 value2 .. keyN valueN    #同时设置多个key value  ,总是返回ok

     

    mysetnx  key1 value1 key2 value2 .. keyN valueN  #用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。

     

    psetex key1 seconds_in_ms  value1        #和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。成功返回OK

    Incr                      # 命令将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值     包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

    本操作的值限制在 64 位(bit)有符号数字表示之内。

    语法
    redis Incr 命令基本语法如下:
    
    redis 127.0.0.1:6379> INCR KEY_NAME 
    可用版本
    >= 1.0.0
    
    返回值
    执行 INCR 命令之后 key 的值。
    
    实例
    redis> SET page_view 20
    OK
    
    redis> INCR page_view
    (integer) 21
    
    redis> GET page_view    # 数字值在 Redis 中以字符串的形式保存
    "21"
    View Code

    incrby  key increament             #对key 存储的数字值增加给定的增量,其他同incr

     

    incrbyfloat key_name  incr_amount         #对key 存储的数字值增加给定的浮点数增量,其他同incr

     

    decr                     #对key 存储的数字减一,其他同incr

     

    decrby key decrement             # 所储存的值减去给定的减量值(decrement) 。

     

    append key_name new_value          #如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就  简单地将给定 key 设为 value ,就像执行 SET key value 一样。

  • 相关阅读:
    IPv4地址被用光,IPv6将接手
    杀猪盘
    大家都应该看看这个贴子,会让你心明眼亮。 注意到这些变化了吗?中国正在发生的100个变化,越往后读越震惊!
    区块链在中国怎么练?
    区块链到底是什么样的技术呢?
    2019感恩节
    人工智能、大数据、物联网、区块链,四大新科技PK,你更看好谁?
    vue遇见的问题(2)---imported multiple times(转载)
    drf-序列化器的理解
    Django rest_framework序列化many=True参数解释
  • 原文地址:https://www.cnblogs.com/fanggege/p/10331024.html
Copyright © 2020-2023  润新知