创建 | 获得 | 创建(覆盖原有值) | 删除 | 批量创建不存在值 | 批量创建值(覆盖原有值) | 批量获得 | |||
---|---|---|---|---|---|---|---|---|---|
string(字符串类型) | append | get | set | del | msetnx | mset | mget | ||
hash(哈希类型) | hset | hget | hsetnx | hdel | hmset | hmget | |||
list(字符串链表) 以从左向右插入为例 | lpush | lrange | lpushx | lrem | |||||
一、string
字符串类型是Redis中为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以 接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value多可以 容纳的数据长度是512M。
1. APPEND/GET/SET/DEL/STRLEN/ SETNX #创建/获得/创建(覆盖原有值)/删除/显示字符长度/对不存在键设置值
192.168.65.152:6379> APPEND ak1 1 创建新值 1
(integer) 1
192.168.65.152:6379> GEt ak1 获得该新值 1
"1"192.168.65.152:6379> set sk1 2 建立新值覆盖原有1 成为2
OK
192.168.65.152:6379> get sk1
"2"
192.168.65.152:6379> strlen sk1 显示字符长度
(integer) 1
192.168.65.152:6379> del sk1 删除
(integer) 1
192.168.65.152:6379> setnx sk10 10 sk10 不存在 若存在无任何效果
(integer) 1
192.168.65.152:6379> get sk10
"10"192.168.65.152:6379> setnx sk10 20
(integer) 0
2. INCR/DECR/INCRBY/DECRBY #递增+1/递减-1/指定增加/指定减少
192.168.65.152:6379> get sk1 此时值为“2”
"2"192.168.65.152:6379> incr sk1 +1
(integer) 3
192.168.65.152:6379> decr sk1 -1
(integer) 2
192.168.65.152:6379> incrby sk1 10 指定值增加10
(integer) 12
192.168.65.152:6379> get sk1
"12"
192.168.65.152:6379> decrby sk1 10 指定值减少10
(integer) 2192.168.65.152:6379> get sk1
"2"
3. SETEX #指定时间后过期
192.168.65.152:6379> setex sk1 5 2 指定5s后“2”值过期
OK
192.168.65.152:6379> get sk1
"2"
192.168.65.152:6379> get sk1
(nil)
4. SETRANGE/GETRANGE 指定从x个字节开始替换/显示从x~x字节值
192.168.65.152:6379> APPEND sk2 redhat 设置初始值为Redhat
(integer) 6
192.168.65.152:6379> SETRANGE sk2 3 ooo 将2~3字节为ooo
(integer) 6
192.168.65.152:6379> get sk2
"redooo"192.168.65.152:6379> GETRANGE sk2 1 3 显示1~3字节值
"edo"
192.168.65.152:6379> get sk2
"redooo"
5、MSET/MSETNX/MGET 批量设置新值(可覆盖)/批量设置不存在值/批量获得
192.168.65.152:6379> mset sk1 "liu" sk2 "wang" 批量添加“liu” “wang”
OK
192.168.65.152:6379> msetnx sk3 "zhang" sk4 "li" 批量添加不存在值 “zhang” “li”(integer) 1
192.168.65.152:6379> mget sk1 sk2 sk3 sk4 批量获得各值
1) "liu"
2) "wang"
3) "zhang"
4) "li"
二、hash
我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合 于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么 该类型 的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。
1. HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX 创建新值/获得/删除/判断是否存在/获取字段数量/创建不存在值
192.168.65.152:6379> hset hk1 1 a
(integer) 0
192.168.65.152:6379> hget hk1 1
"a"
192.168.65.152:6379> hdel hk1 1
(integer) 1
192.168.65.152:6379> hexists hk2 3 #不存在显示为0
(integer) 0
192.168.65.152:6379> hset hk2 2 b
(integer) 1
192.168.65.152:6379> hlen hk2
(integer) 1192.168.65.152:6379> hsetnx hk2 3 c
(integer) 1
2. HINCRBY 字段值增减
192.168.65.152:6379> hset hk3 1 1 新添加1字段 值为1
(integer) 1
192.168.65.152:6379> hincrby hk3 1 1 值增加1
(integer) 2
192.168.65.152:6379> hget hk3 1
"2"
192.168.65.152:6379> hincrby hk3 1 -10 值增加-10
(integer) -8
192.168.65.152:6379> hget hk3 1
"-8"
3. HMSET/HMGET/HGETALL/HKEYS/HVALS 批量 添加/获取/获取所有字段和值/获取所有字段/获取所有值
92.168.65.152:6379> hmset hk4 1 a 2 b 3 c
OK
192.168.65.152:6379> hmget hk4 1 2 3
1) "a"
2) "b"
3) "c"
192.168.65.152:6379> hmget hk4 1 2 3 4 4字段不存在,显示为(nil)
1) "a"
2) "b"
3) "c"
4) (nil)
192.168.65.152:6379> hgetall hk4
1) "1"
2) "a"
3) "2"
4) "b"
5) "3"
6) "c"
192.168.65.152:6379> hkeys hk4
1) "1"
2) "2"
3) "3"
192.168.65.152:6379> hvals hk4
1) "a"
2) "b"
3) "c"
三、list
在Redis中,List类型是的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部 (right)添加新的 元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反, 如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。 List中可以包含的大元素数量 是4294967295。
1. LPUSH/LPUSHX/LRANGE 从左至右插入/从左边插入值(存在键时)/根据范围获得
192.168.65.152:6379> lpush lk1 a b c d 从左至右插入 d为头部
(integer) 4
192.168.65.152:6379> lrange lk1 0 -1 0 -1 表示全部
1) "d" 2
2) "c" 1
3) "b" 0
4) "a"192.168.65.152:6379> lrange lk1 0 2
1) "d"
2) "c"
3) "b"192.168.65.152:6379> lpushx lk1 e 插入到1)位置 最左边
(integer) 5
192.168.65.152:6379> lrange lk1 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
192.168.65.152:6379> lpushx lk2 e
(integer) 0
192.168.65.152:6379> lrange lk2 0 -1
(empty list or set)
2. LPOP/LLEN 弹出头部(最左边)/查看元素数量
192.168.65.152:6379> lpop lk1
"e"
192.168.65.152:6379> lpop lk1
"d"
192.168.65.152:6379> llen lk1
(integer) 3
3.LREM/LINDEX/LSET/LTRIM 指定元素数量删除/查看指定位置元素/指定位置插入元素/ 保留范围内元素
192.168.65.152:6379> lpush lk2 a b a c d b a d
(integer) 8
192.168.65.152:6379> lrem lk2 2 a 删除距离头部最近的2个a
(integer) 2
192.168.65.152:6379> lrange lk2 0 -1
1) "d"
2) "b"
3) "d"
4) "c"
5) "b"
6) "a"
192.168.65.152:6379> lindex lk2 2 索引值0:“d” 1:“b” 2:“d” 3:“c” ........
"d"
192.168.65.152:6379> lset lk2 1 a 在1位置插入“a”
OK
192.168.65.152:6379> lrange lk2 0 -1
1) "d"
2) "a"
3) "d"
4) "c"
5) "b"
6) "a"
192.168.65.152:6379> ltrim lk2 0 2 保留0~2值
OK
192.168.65.152:6379> lrange lk2 0 -1
1) "d"
2) "a"
3) "d"
4. LINSERT +before/after 在指定元素之前/后插入元素
192.168.65.152:6379> lpush lk3 a b c d e
(integer) 5
192.168.65.152:6379> linsert lk3 before a 1 在“a”之前插入1
(integer) 6
192.168.65.152:6379> lindex lk3 0
"e"
192.168.65.152:6379> lrange lk3 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "1"
6) "a"
192.168.65.152:6379> linsert lk3 after a 2 在“a”之后插入2
(integer) 7
192.168.65.152:6379> lrange lk3 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "1"
6) "a"
7) "2"
5. RPUSH/RPUSHX/RPOP 与头部用法相同 从右至左插入值/从右边插入值(存在键时)/ 弹出尾部(最边右)/
192.168.65.152:6379> rpush rk1 a b c d
(integer) 4
192.168.65.152:6379> lrange rk1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
192.168.65.152:6379> rpushx rk1 1
(integer) 5
192.168.65.152:6379> lrange rk1 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "1"
192.168.65.152:6379> rpop rk1
"1"
四、key
在前面主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些 命 令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。下面主要讲述与Key相关的 Redis命令。学习这些命令对于学习 Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器
1、KEYS/DEL/EXISTS/RENAME/MOVE 查看关联key/删除/存在/改名/移动
192.168.65.152:6379> set sk1 1
OK
192.168.65.152:6379> set sk1 2
OK
192.168.65.152:6379> set sk1 3
OK
192.168.65.152:6379> hset hk1 1 a
(integer) 1
192.168.65.152:6379> hset hk1 2 b # 设置测试环境
(integer) 1192.168.65.152:6379> keys * #查看所有键值
1) "sk1"
2) "hk1"
192.168.65.152:6379> del sk1 1 #删除sk1(integer) 1
192.168.65.152:6379> get sk1
(nil)
192.168.65.152:6379> exists sk1 #查看sk1是否存在
(integer) 0
192.168.65.152:6379> exists hk1 #存在为“1” 不存在为“0”
(integer) 1192.168.65.152:6379> move hk1 1 #移动
(integer) 1
192.168.65.152:6379> select 1 #选择数据库
OK
192.168.65.152:6379[1]> exists hk1
(integer) 1
192.168.65.152:6379[1]> select 0
OK
192.168.65.152:6379> exists hk1
(integer) 0
192.168.65.152:6379>
192.168.65.152:6379> set mykey "hello"
OK
192.168.65.152:6379> rename mykey mykey1 #改名
OK
192.168.65.152:6379> get mykey
(nil)
192.168.65.152:6379> get mykey1
"hello"
2、EXPIRE/PERSIST/TTL 设置键超时时间/去掉超时时间,使键成为永久键/查看剩余时间192.168.65.152:6379> set mykey "hello"
OK
192.168.65.152:6379> expire mykey 100 #设置超时时间为100秒
(integer) 1
192.168.65.152:6379> ttl mykey
(integer) 94
192.168.65.152:6379> persist mykey #使超时时间立即失效
(integer) 1
192.168.65.152:6379> ttl mykey
(integer) -1
192.168.65.152:6379> del mykey
(integer) 1
192.168.65.152:6379> set mykey "hello"
OK
192.168.65.152:6379> expire mykey 20
(integer) 1
192.168.65.152:6379> ttl mykey
(integer) 11
3. TYPE/RANDOMKEY/ 查看键类型/返回数据库任意键
192.168.65.152:6379> set mykey 1
OK
192.168.65.152:6379> TYPE mykey
string192.168.65.152:6379> hset mykey111 1 a
(integer) 1
192.168.65.152:6379> TYPE mykey111
hash
192.168.65.152:6379> randomkey
"mykey111"