zoukankan      html  css  js  c++  java
  • Redis shell

    Redis的使用

    Redis key 值是二进制安全的, 可以用任何二进制序列作为key值, 无论是简单字符串还是JPEG文件的内容皆可。空字符串也是有效key值。

    切换数据库

    select databaseid 选中数据库 (redis 默认有16个实例库, 0~15, 登录时默认库0)

    Key操作

    KEYS pattern

    • 查找所有符合给定模式 pattern 的 key

    EXISTS key

    • 检查给定 key 是否存在

    EXPIRE key seconds

    • 给key设置生命周期, 当key过期时会被自动删除

    MOVE key db

    • 将当前数据库的 key 移动到给定的数据库 db 中
    • 如果源数据库和目标数据库有相同的key, 或 key 不存在于当前数据库, 那么 MOVE 无效

    TTL key

    • 以秒为单位, 返回给定key的剩余存活时间(保留时间)

    TYPE key

    • 返回 key 所存储的值的类型

    DEL key [key ...]

    • 删除给定的一个或多个key。 不存在的 key 会被 忽略

    练习:

    # exercise
    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> exists ronnie
    (integer) 0
    127.0.0.1:6379[1]> set ronnie yuan
    OK
    127.0.0.1:6379[1]> exists ronnie
    (integer) 1
    127.0.0.1:6379[1]> move ronnie 2
    (integer) 1
    127.0.0.1:6379[1]> exists ronnie
    (integer) 0
    127.0.0.1:6379[1]> select 2
    OK
    127.0.0.1:6379[2]> exists ronnie
    (integer) 1
    127.0.0.1:6379[2]> type ronnie
    string
    127.0.0.1:6379[2]> del ronnie
    (integer) 1
    127.0.0.1:6379[2]> exists ronnie
    (integer) 0
    
    # ex
    127.0.0.1:6379[2]> SETEX test 20 fun
    OK
    127.0.0.1:6379[2]> ttl test
    (integer) 16
    127.0.0.1:6379[2]> ttl test
    (integer) 12
    127.0.0.1:6379[2]> ttl test
    (integer) 5
    127.0.0.1:6379[2]> ttl test
    (integer) -2
    
    
    

    String操作

    字符串是Redis最基本的一种值类型。Redis 字符串是二进制安全的, 这意味着一个Redis字符串能包含任意类型的数据

    SET key value [EX seconds][PX milliseconds] [NX|XX]
    # EX: 设置过期时间, 秒, 等同于SETEX key seconds value
    # PX: 设置过期时间, 毫秒, 等同于PSETEX key milliseconds value
    # NX: NX键不存在, 才能设置, 等同于SETNX key value
    # XX: XX键存在时, 才能设置
    
    ## 将字符串值 value 关联到key
    ## 如果该 key 已经持有其他值, SET就覆写旧值, 无视类型
    ## 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
    

    GET key

    • 返回 key 所关联的字符串值
    • 如果key不存在, 返回特殊值nil
    • 假如 key 储存的值不是字符串类型, 则返回一个错误, 因为 GET 只能用于处理字符串值

    APPEND key value

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

    STRLEN key (String Length of key)

    • 返回 key 所储存的字符串值的长度。
    • 当 key 储存的不是字符串值时, 返回一个错误。

    INCR key (INCR --> Increase)

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

    INCRBY key increment (INCRBY --> Increase by)

    • 将 key 所储存的值加上增量 increment
    • 如果 key 不存在, 那么 key 的值会先被初始化为 0, 然后再执行INCRBY命令
    • 如果值包含错误的类型, 或字符串类型的值不能表示为数字, 那么返回一个错误。

    DECR key (DECR --> decrease)

    • 将 key 中储存的数字值减一

    DECRBY key decrement (DECRBY --> Decrease by)

    • 将 key 所存储的值减去减量 decrement

    GETRANGE key start end

    • 返回 key 中字符串值的子字符串, 字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end)
    • 附属偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个 ...

    SETRANGE key offset value

    • 用 value 参数覆写(overwrite) 给定 key 所储存的字符串值, 从偏移量 offset 开始。

    SETEX key seconds value

    • 将值 value 关联到 key, 并将 key 的生存时间设为 seconds
    • 如果key已经存在, SETEX 命令将覆写旧值
    • 类似于 SET key value 和 EXPIRE key seconds, 不同之处是:
      • SETEX 是一个原子性(atomic) 操作, 关联值和设置生存时间这两个action会在同一时间内完成, 该命令在Redis用作缓存时, 非常实用。

    SETNX key value

    • 将 key 的值设置为 value, 当且仅当 key 不存在。
    • 若给定的 key 已将存在, 则SETNX不做任何动作。
    • SETNX <=> SET if Not exists

    MGET key [key ... ] (M --> Multiply)

    • 返回所有(一个或多个)给定 key 的值。
    • 如果给定的 key 里面, 有某个 key 不存在, 那么该 key 返回特殊值nil(该命令永不失败)。

    MSET key value [key value ... ]

    • 同时设置一个或多个 key-value 对
    • 如果某个给定 key 已经存在, 那么 MEST 会用新值覆盖原来的旧值
    • 如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。

    MSETNX key value [key value ... ]

    • 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
    • 即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。
    • MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。
    # e1
    127.0.0.1:6379[2]> set heros slark
    OK
    127.0.0.1:6379[2]> append heros luna
    (integer) 9
    127.0.0.1:6379[2]> strlen heros
    (integer) 9
    127.0.0.1:6379[2]> get heros
    "slarkluna"
    127.0.0.1:6379[2]> getrange heros 4 -1
    "kluna"
    127.0.0.1:6379[2]> setrange heros 5 sf
    (integer) 9
    127.0.0.1:6379[2]> get heros
    "slarksfna"
    127.0.0.1:6379[2]> setex heros 10 storm
    OK
    127.0.0.1:6379[2]> ttl heros
    (integer) 1
    127.0.0.1:6379[2]> ttl heros
    (integer) -2
    
    # e2
    127.0.0.1:6379[2]> SETNX balance 300
    (integer) 1
    127.0.0.1:6379[2]> get balance
    "300"
    127.0.0.1:6379[2]> SETNX balance 200
    (integer) 0
    127.0.0.1:6379[2]> get balance
    "300"
    
    # e3
    127.0.0.1:6379[2]> MSETNX name ronnie hometown shanghai university massey age 24 major chemistry
    (integer) 1
    127.0.0.1:6379[2]> MGET name hometown university age major
    1) "ronnie"
    2) "shanghai"
    3) "massey"
    4) "24"
    5) "chemistry"
    127.0.0.1:6379[2]> MSETNX name john hometown auckalnd university massey age 57 occupation professor
    (integer) 0
    127.0.0.1:6379[2]> MGET name hometown university age occupation
    1) "ronnie"
    2) "shanghai"
    3) "massey"
    4) "24"
    5) (nil)
    
    

    List 操作

    LPUSH key value [value ... ] (L --> Left)

    • 将一个或多个值 value 插入到列表 key 的表头
    • 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令"

    RPUSH key value [value ... ] (R --> Right)

    • 将一个或多个值 value 插入到列表 key 的表尾(最右边)。
    • 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。

    LRANGE key start stop (L --> List)

    • 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
    • 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

    LPOP key

    • 移除并返回列表 key 的头元素

    RPOP key

    • 移除并返回列表 key 的尾元素

    LINDEX key index (L --> List)

    • 返回列表key中, 下标为 index 的元素
    • 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素...
    • 可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素...

    LLEN key (L --> Left LEN --> Length)

    • 返回列表 key 的长度。
    • 如果 key 不存在,则 key 被解释为一个空列表,返回 0 .

    LREM key count value (L --> Left REM --> remove)

    • 根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种:
      • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。(left --> right)
      • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。(right -> left)
      • count = 0 : 移除表中所有与 value 相等的值。

    LTRIM key start stop (L --> Left)

    • 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
    • 举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。

    RPOPLPUSH source destination (Right Pop Push)

    • 命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:

      • 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。

      • 将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

    LSET key index value

    • 将列表 key 下标为 index 的元素的值设置为 value 。
    • 当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。

    LINSERT key BEFORE|AFTER pivot value (Left Insert)

    • 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
    • 当 pivot 不存在于列表 key 时,不执行任何操作。
    • 当 key 不存在时, key 被视为空列表,不执行任何操作。
    127.0.0.1:6379[2]> LPUSH heros slark luna spectre storm ember broodmother
    (integer) 6
    127.0.0.1:6379[2]> LRANGE heros 0 4
    1) "broodmother"
    2) "ember"
    3) "storm"
    4) "spectre"
    5) "luna"
    127.0.0.1:6379[2]> LRANGE heros 0 -1
    1) "broodmother"
    2) "ember"
    3) "storm"
    4) "spectre"
    5) "luna"
    6) "slark"
    127.0.0.1:6379[2]> RPUSH heros2 viper anti_mage zeus meepo huskar
    (integer) 5
    127.0.0.1:6379[2]> LLEN heros
    (integer) 6
    127.0.0.1:6379[2]> RPOPLPUSH heros heros2
    "slark"
    127.0.0.1:6379[2]> LRANGE heros 0 -1
    1) "broodmother"
    2) "ember"
    3) "storm"
    4) "spectre"
    5) "luna"
    127.0.0.1:6379[2]> LRANGE heros2 0 -1
    1) "slark"
    2) "viper"
    3) "anti_mage"
    4) "zeus"
    5) "meepo"
    6) "huskar"
    127.0.0.1:6379[2]> LSET heros 0 wtf
    OK
    127.0.0.1:6379[2]> LRANGE heros 0 -1
    1) "wtf"
    2) "ember"
    3) "storm"
    4) "spectre"
    5) "luna"
    127.0.0.1:6379[2]> LINSERT heros BEFORE wtf omg
    (integer) 6
    127.0.0.1:6379[2]> LRANGE heros 0 -1
    1) "omg"
    2) "wtf"
    3) "ember"
    4) "storm"
    5) "spectre"
    6) "luna"
    
    

    Set 操作

    SADD key member [member ... ]

    • 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
    • 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

    SMEMBERS key

    • 返回集合 key 中的所有成员。
    • 不存在的 key 被视为空集合。

    SISMEMEBER key member

    • 判断 member 元素是否集合 key 的成员。

    SCARD key

    • 返回集合 key 的基数(集合中元素的数量)。

    SREM key member [member ... ]

    • 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。

    SPOP key (随机抽奖)

    • 移除并返回集合中的一个随机元素。
    • 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。

    SMOVE source destination member

    • 将 member 元素从 source 集合移动到 destination 集合。SMOVE 是原子性操作。
    • 如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
    • 当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
    • 当 source 或 destination 不是集合类型时,返回一个错误。

    SDIFF key [key ... ]

    • 求差集:从第一个key的集合中去除其他集合和自己的交集部分。

    SINTER key [key ... ] (求交集)

    • 返回一个集合的全部成员,该集合是所有给定集合的交集。

    SUNTION key [key ... ]

    • 返回一个集合的全部成员,该集合是所有给定集合的并集。
    • 不存在的 key 被视为空集。

    Sorted set 操作

    类似Sets,但是每个字符串元素都关联到一个叫score浮动数值。里面的元素总是通过score进行着排序, 有所不同的是, 它是可以检索一系列元素。Zset 是 key score1 value1 score2 value2。

    ZADD key score member [[score member] ... ]

    • 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

    ZRANGE key start stop [WITHSCORES]

    • 返回有序集 key 中,指定区间内的成员。

    • 其中成员的位置按 score 值递增(从小到大)来排序。

    • 具有相同 score 值的成员按字典序(lexicographical order )来排列。

    • 如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。

    ZREVRANGE key start stop [WITHSCORES] (REV --> reverse)

    • 返回有序集 key 中,指定区间内的成员。
    • 其中成员的位置按 score 值递减(从大到小)来排列。

    ZREM key member [member ... ]

    • 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。

    ZREMRANGEBYSCORE key min max

    • 移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。

    ZSCORE key member

    • 返回有序集 key 中,成员 member 的 score 值。

    ZCARD key

    • 返回有序集 key 的基数。

    ZCOUNT key min max

    • 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。

    ZRANK key member

    • 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。

    Hash 操作(散列)

    • KV 模式不变, 但是 V 是一个键值对

    HSET key field value

    • 将哈希表 key 中的域 field 的值设为 value 。

    HGET key field

    • 返回哈希表 key 中给定域 field 的值。

    HMSET key field value [field value ... ]

    • 同时将多个 field-value (域-值)对设置到哈希表 key 中。
    • 此命令会覆盖哈希表中已存在的域。

    HMGET key field [field ...]

    • 返回哈希表 key 中, 一个或多个给定域的值。

    HGETALL key

    • 返回哈希表 key 中, 所有的域和值。

    HKEYS key

    • 返回哈希表 key 中 的所有域

    HVALS key

    • 返回哈希表 key 中所有域的值。

    HSETNX key field value

    • 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
    • 若域 field 已经存在,该操作无效。

    HEXISTS key field

    • 查看哈希表 key 中, 给定域 field是否存在。

    HDEL key field [field ... ]

    • 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

    HINCRBY key field increment

    • 为哈希表 key 中的域 field 的值加上增量 increment 。
    • 增量也可以为负数,相当于对给定域进行减法操作。

    HINCRBTFLOAT key field increment

    • 增加浮点数
  • 相关阅读:
    AJAX跨域JS访问
    dd
    学习java,搭建一个英文名著轻松阅读网站
    超载问题求解!!!
    nginx + uwsgi 部署Django项目
    一种算法问题,求指点!
    js除法余数
    button捕捉回车键
    为SQL表添加全文索引范例
    .Net刷新页面的小结
  • 原文地址:https://www.cnblogs.com/ronnieyuan/p/11674541.html
Copyright © 2011-2022 走看看