zoukankan      html  css  js  c++  java
  • Redis从0到精通--string

    String(字符串)

    ##########################################################################
    127.0.0.1:6379> set key1 v1 # 设置值
    OK
    127.0.0.1:6379> get key1 # 获得值
    "v1"
    127.0.0.1:6379> keys * # 获得所有的key
    1) "key1"
    127.0.0.1:6379> EXISTS key1 # 判断某一个key是否存在
    (integer) 1
    127.0.0.1:6379> APPEND key1 "hello" # 追加字符串,如果当前key不存在,就相当于setkey
    (integer) 7
    127.0.0.1:6379> get key1
    "v1hello"
    127.0.0.1:6379> STRLEN key1 # 获取字符串的长度!
    (integer) 7
    127.0.0.1:6379> APPEND key1 ",kaungshen"
    (integer) 17
    127.0.0.1:6379> STRLEN key1
    (integer) 17
    127.0.0.1:6379> get key1
    "v1hello,kaungshen"
    ##########################################################################
    # i++
    # 步长 i+=
    127.0.0.1:6379> set views 0 # 初始浏览量为0
    OK
    127.0.0.1:6379> get views
    "0"
    127.0.0.1:6379> incr views # 自增1 浏览量变为1
    (integer) 1
    127.0.0.1:6379> incr views
    (integer) 2
    127.0.0.1:6379> get views
    "2"
    127.0.0.1:6379> decr views # 自减1 浏览量-1
    (integer) 1
    127.0.0.1:6379> decr views
    (integer) 0
    127.0.0.1:6379> decr views
    (integer) -1
    127.0.0.1:6379> get views
    "-1"
    127.0.0.1:6379> INCRBY views 10 # 可以设置步长,指定增量!
    (integer) 9
    127.0.0.1:6379> INCRBY views 10
    (integer) 19
    127.0.0.1:6379> DECRBY views 5
    (integer) 14
    ##########################################################################
    # 字符串范围 range
    127.0.0.1:6379> set key1 "hello,kuangshen" # 设置 key1 的值
    OK
    127.0.0.1:6379> get key1
    "hello,kuangshen"
    127.0.0.1:6379> GETRANGE key1 0 3 # 截取字符串 [0,3]
    "hell"
    127.0.0.1:6379> GETRANGE key1 0 -1 # 获取全部的字符串 和 get key是一样的
    "hello,kuangshen"
    # 替换!
    127.0.0.1:6379> set key2 abcdefg
    OK
    127.0.0.1:6379> get key2
    "abcdefg"
    127.0.0.1:6379> SETRANGE key2 1 xx # 替换指定位置开始的字符串!
    (integer) 7
    127.0.0.1:6379> get key2
    "axxdefg"
    ##########################################################################
    # setex (set with expire) # 设置过期时间
    # setnx (set if not exist) # 不存在在设置 (在分布式锁中会常常使用!)
    127.0.0.1:6379> setex key3 30 "hello" # 设置key3 的值为 hello,30秒后过期
    OK
    127.0.0.1:6379> ttl key3
    (integer) 26
    127.0.0.1:6379> get key3
    "hello"
    127.0.0.1:6379> setnx mykey "redis" # 如果mykey 不存在,创建mykey
    (integer) 1
    127.0.0.1:6379> keys *
    1) "key2"
    2) "mykey"
    3) "key1"
    127.0.0.1:6379> ttl key3
    (integer) -2
    127.0.0.1:6379> setnx mykey "MongoDB" # 如果mykey存在,创建失败!
    (integer) 0
    127.0.0.1:6379> get mykey
    "redis"
    ##########################################################################
    mset
    mget
    127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 同时设置多个值
    OK
    127.0.0.1:6379> keys *
    1) "k1"
    2) "k2"
    3) "k3"
    127.0.0.1:6379> mget k1 k2 k3 # 同时获取多个值
    1) "v1"
    2) "v2"
    3) "v3"
    127.0.0.1:6379> msetnx k1 v1 k4 v4 # msetnx 是一个原子性的操作,要么一起成功,要么一起
    失败!
    (integer) 0
    127.0.0.1:6379> get k4
    (nil)
    # 对象
    set user:1 {name:zhangsan,age:3} # 设置一个user:1 对象 值为 json字符来保存一个对象!
    # 这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全OK了!
    127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2
    OK
    127.0.0.1:6379> mget user:1:name user:1:age
    1) "zhangsan"
    2) "2"
    ##########################################################################
    getset # 先get然后在set
    127.0.0.1:6379> getset db redis # 如果不存在值,则返回 nil
    (nil)
    127.0.0.1:6379> get db
    "redis
    127.0.0.1:6379> getset db mongodb # 如果存在值,获取原来的值,并设置新的值
    "redis"
    127.0.0.1:6379> get db
    "mongodb"
    
    

    数据结构是相同的!

    String类似的使用场景:value除了是我们的字符串还可以是我们的数字! 计数器 统计多单位的数量 粉丝数 对象缓存存储!

  • 相关阅读:
    【BZOJ】2729: [HNOI2012]排队
    【BZOJ】2734: [HNOI2012]集合选数
    【BZOJ】3573: [Hnoi2014]米特运输
    【BZOJ】4008: [HNOI2015]亚瑟王
    【BZOJ】[HNOI2015]菜肴制作
    数论六·模线性方程组
    数论五·欧拉函数
    黄金矿工
    数论四·扩展欧几里德
    数论三·约瑟夫问题
  • 原文地址:https://www.cnblogs.com/qq3245792286/p/15405595.html
Copyright © 2011-2022 走看看