先用Redis-Key热个身
| 命令 | 含义以及返回值 |
|---|
| set | 将字符串值 value 关联到 key 。如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。 |
| move | 将当前数据库的 key 移动到给定的数据库 db 当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。移动成功返回 1 ,失败则返回 0 。 |
| exists | 检查给定 key 是否存在。返回值若 key 存在,返回 1 ,否则返回 0 。 |
| get | 返回与键 key 相关联的字符串值。 |
| expire | 好多内容 |
| ttl | 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。返回值当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。 |
| type | 返回 key 所储存的值的类型。返回值:none (key不存在)、string (字符串)、list (列表)、set (集合)、zset (有序集)、hash (哈希表)、stream (流) |
127.0.0.1:6379> set name kittyguy
OK
127.0.0.1:6379> set age 100
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> EXISTS age
(integer) 1
127.0.0.1:6379> EXISTS agee
(integer) 0
127.0.0.1:6379> move name 3
(integer) 1
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> get name
"kittyguy"
127.0.0.1:6379[3]> expire name 12
(integer) 1
127.0.0.1:6379[3]> ttl name
(integer) 7
127.0.0.1:6379[3]> ttl name
(integer) 5
127.0.0.1:6379[3]> ttl name
(integer) 4
127.0.0.1:6379[3]> ttl name
(integer) 3
127.0.0.1:6379[3]> ttl name
(integer) 1
127.0.0.1:6379[3]> ttl name
(integer) 0
127.0.0.1:6379[3]> ttl name
(integer) -2
127.0.0.1:6379[3]> get name
(nil)
127.0.0.1:6379[3]> select 0
OK
127.0.0.1:6379> type age
string
关于String的操作
拼接操作
| 命令 | 含义以及返回值 |
|---|
| append | 如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样。返回值:追加 value 之后, 键 key 的值的长度。 |
| strlen | 获取对应key 的value长度 |
127.0.0.1:6379> set name java
OK
127.0.0.1:6379> append name " is good"
(integer) 12
127.0.0.1:6379> get name
"java is good"
127.0.0.1:6379> strlen name
(integer) 12
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> append age 123456
(integer) 6
127.0.0.1:6379> keys *
1) "age"
2) "name"
递增递减操作
| 命令 | 含义以及返回值 |
|---|
| incr | 为键 key 储存的数字值加上一。如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。 |
| decr | 为键 key 储存的数字值减去一。如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。 |
| incrby | 为键 key 储存的数字值加上增量 increment 。如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。 |
| decrby | 将键 key 储存的整数值减去减量 decrement 。如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。 |
127.0.0.1:6379> set count 0
OK
127.0.0.1:6379> incr count
(integer) 1
127.0.0.1:6379> get count
"1"
127.0.0.1:6379> decr count
(integer) 0
127.0.0.1:6379> get count
"0"
127.0.0.1:6379> decr count
(integer) -1
127.0.0.1:6379> decr count
(integer) -2
127.0.0.1:6379> incrby count 4
(integer) 2
127.0.0.1:6379> get count
"2"
127.0.0.1:6379> decrby count 10
(integer) -8
127.0.0.1:6379> get count
"-8"
截取替换操作
| 命令 | 含义以及返回值 |
|---|
| getrange | 返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推。 |
| setrange | 内容较多请仔细阅读 |
| setex | 将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。 |
| setnx | 只在键 key 不存在的情况下, 将键 key 的值设置为 value 。若键 key 已经存在, 则 SETNX 命令不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。 |
127.0.0.1:6379> set str "0123456789"
OK
127.0.0.1:6379> getrange str 2 5
"2345"
127.0.0.1:6379> getrange str 2 -1
"23456789"
127.0.0.1:6379> set str2 aaaaaaaa
OK
127.0.0.1:6379> setrange str2 3 kkk
(integer) 8
127.0.0.1:6379> get str2
"aaakkkaa"
127.0.0.1:6379> setex str3 12 "redis"
OK
127.0.0.1:6379> ttl str3
(integer) 5
127.0.0.1:6379> ttl str3
(integer) 4
127.0.0.1:6379> ttl str3
(integer) 3
127.0.0.1:6379> ttl str3
(integer) 1
127.0.0.1:6379> ttl str3
(integer) 0
127.0.0.1:6379> ttl str3
(integer) -2
127.0.0.1:6379> get str3
(nil)
127.0.0.1:6379> keys *
1) "str2"
2) "str"
127.0.0.1:6379> setnx str3 "kitty" 是『SET if Not exists』(如果不存在,则 SET)的简写。如果存在就不操作
(integer) 1
127.0.0.1:6379> setnx str3 "7878787"
(integer) 0
127.0.0.1:6379> get str3
"kitty"
多值操作
| 命令 | 含义以及返回值 |
|---|
| mset | 同时为多个键设置值。如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。 |
| mget | 返回给定的一个或多个字符串键的值。如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。 |
| msetnx | 当且仅当所有给定键都不存在时, 为所有给定键设置值。即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。返回值:当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。 |
127.0.0.1:6379> mset str "jk" str1 "mk" str2 "kitty" str3 "guy"
OK
127.0.0.1:6379> keys *
1) "str1"
2) "str"
3) "str2"
4) "str3"
127.0.0.1:6379> mget str1 str2 str3
1) "mk"
2) "kitty"
3) "guy"
127.0.0.1:6379> msetnx str "hH" str1 "love" str4 "false"
(integer) 0
127.0.0.1:6379> mget str1 str2 str3
1) "mk"
2) "kitty"
3) "guy"
127.0.0.1:6379>
对象的操作(json)
127.0.0.1:6379> mset user:1:id "454545445446pp" user:1:name "jonh" user:1:address "China"
OK
127.0.0.1:6379> mget user:1:id user:1:name user:1:address
1) "454545445446pp"
2) "jonh"
3) "China"
127.0.0.1:6379> getset user:1:address "USA"
"China"
127.0.0.1:6379> get user:1:address
"USA"
127.0.0.1:6379>