redis储存的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
value的数据结构:
1)字符串类型 string
2)哈希类型 hash:map格式
3)列表类型 list:linkedlist格式。支持重复元素
4)集合类型 set:不允许重复元素
5)有序集合类型 sorted set:不允许重复元素,且元素有顺序
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
序号 | 命令及描述 |
---|---|
1 | SET键值 设置指定键的值 |
2 | GET key 获取指定键的值 |
3 | GETRANGE键开始结束 返回键中字符串值的子字符 |
4 | GETSET键值 将给定键的值设为值,并返回键的旧值(旧值) |
5 | GETBIT键偏移 对键所有存储的字符串值,获取指定偏移量上的位(位) |
6 | MGET key1 [key2 ..] 获取所有(一个或多个)给定键的值 |
7 | SETBIT键偏移值 对键所有存储的字符串值,设置或清除指定偏移量上的位(位) |
8 | SETEX键秒值 将值值关联到键,并将键的过期时间设为秒(以秒为单位) |
9 | SETNX键值 只有在键不存在时设置键的值 |
10 | SETRANGE键偏移值 用值参数覆写给定键所储存的字符串值,从偏移量偏移开始 |
11 | STRLEN键 返回键所储存的字符串值的长度 |
12 | MSET键值[键值...] 同时设置一个或多个键值对 |
13 | MSETNX键值[键值...] 同时设置一个或多个键值对,当且仅当所有给定键都不存在 |
14 | PSETEX key milliseconds值 这个命令和SETEX命令相似,但它以毫秒为单位设置key的生存时间,而不是像SETEX命令那样,以秒为单位 |
15 | INCR key 将密钥中储存的数字值增一 |
16 | INCRBY键增量 将键所存储的值加上给定的增量值(增量) |
17 | INCRBYFLOAT键增量 将键所存储的值加上给定的浮点增量值(增量) |
18 | DECR key 将密钥中储存的数字值减一 |
19 | DECRBY key decrement key所储存的值减去给定的减量值(减量) |
20 | APPEND键值 如果键已经存在并且是一个字符串,APPEND命令将值追加到键原来的值的末尾 |
设置key 对应的值为 string类型的value。
127.0.0.1:6379> set my li
OK
127.0.0.1:6379> get my
"li"
设置key 对应的值为 string类型的value。 如果 key 已经存在,返回 0, nx是 not exist的意思。
127.0.0.1:6379> get my
"li"
127.0.0.1:6379> setnx my li_new
(integer) 0
127.0.0.1:6379> get my
"li"
设置key 对应的值为 string类型的value,并指定此键值对应的有效期。 例如我们添加一个 phoneColor= red的键值对,并指定它的有效期是 10秒
127.0.0.1:6379> setex color 10 yellow
OK
127.0.0.1:6379> get color
"yellow"
127.0.0.1:6379> get color
(nil)
可见由于最后一次的调用是 10秒以后了,所以取不到 haicolor 这个键对应的值。
设置指定key 的value 值的子字符串。例如将 lizq 替换成 lizq123
127.0.0.1:6379> set tui lizq
OK
127.0.0.1:6379> setrange tui 0 lizq123
(integer) 7
127.0.0.1:6379> get tui
"lizq123"
其中的0是指从下标为0(不包含0)的字符开始替换
一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。
127.0.0.1:6379> mset name1 one name2 two name3 three
OK
127.0.0.1:6379> get name1
"one"
127.0.0.1:6379> get name2
"two"
127.0.0.1:6379> get name3
"three"
一次设置多个 key 的值。如果存在就不设置,不存在就设置。
127.0.0.1:6379> msetnx name1 mazi name4 zhouyunfa
(integer) 0
127.0.0.1:6379> get name1
"one"
127.0.0.1:6379> get name4
(nil)
可以看出,如果返回0,表示有存在到值,那么整体设置不成功,所有操作都会被会滚,不会执行。
设置key 的值,并返回 key 的旧值
127.0.0.1:6379> get name1
"one"
127.0.0.1:6379> getset name1 lizq123
"one"
127.0.0.1:6379> get name1
"lizq123"
字符串截取
127.0.0.1:6379> set name1 huawei
OK
127.0.0.1:6379> get name1
"huawei"
127.0.0.1:6379> getrange name1 0 3
"huaw"
127.0.0.1:6379> getrange name1 4 100
"ei"
一次获取多个key 的值,如果对应key 不存在,则对应返回 nil。
127.0.0.1:6379> mget name1 name2 name3 name4
1) "huawei"
2) (nil)
3) "vivo"
4) "mi"
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> incr age
(integer) 21
127.0.0.1:6379> get age
"21"
127.0.0.1:6379> get age
"21"
127.0.0.1:6379> incrby age 5
(integer) 26
127.0.0.1:6379> get age
"26"
127.0.0.1:6379> get age
"26"
127.0.0.1:6379> decr age
(integer) 25
127.0.0.1:6379> get age
"25"
127.0.0.1:6379> get age
"25"
127.0.0.1:6379> decrby age 5
(integer) 20
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> get name1
"huawei"
127.0.0.1:6379> append name1 @qq.com
(integer) 13
127.0.0.1:6379> get name1
"huawei@qq.com"
127.0.0.1:6379> strlen name1
(integer) 13
127.0.0.1:6379> strlen age
(integer) 2