Redis 数据类型
Redis支持5种数据类型:
string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)
本段介绍String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
实例
1、set key
设置指定 key 的值 key-value
127.0.0.1:6379> set name william
OK
2、获取指定 key 的值。
get key
127.0.0.1:6379> get name
"william"
3、getrange key startIndex endIndex
返回 key 中字符串值的子字符
127.0.0.1:6379> getrange name 0 3
"will"
4、getset key newvalue
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
127.0.0.1:6379> getset name willima007
"william"
5、getbit key xxx
对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
127.0.0.1:6379> getbit name 3
(integer) 1
127.0.0.1:6379> get name
"willima007"
127.0.0.1:6379> getbit name 4
(integer) 0
~~~没理解
6、mget key1 [key2]
获取所有(一个或多个)给定 key 的值。
127.0.0.1:6379> mget name pass
1) "willima007"
2) "jack"
7、SETBIT key offset value
对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
127.0.0.1:6379> setbit bit 1002 1
(integer) 0
~~~没理解
8、 SETEX key seconds value
将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
127.0.0.1:6379[1]> set name william
OK
127.0.0.1:6379[1]> get name
"william"
127.0.0.1:6379[1]> setex name 3 william008
OK
重新赋值了
127.0.0.1:6379[1]> get name
"william008"
过了三秒后查询、为空了。
127.0.0.1:6379[1]> get name
(nil)
9、 SETNX key value
只有在 key 不存在时设置 key 的值。
127.0.0.1:6379[1]> set name william008
OK
127.0.0.1:6379[1]> get name
"william008"
127.0.0.1:6379[1]> setnx name william008
(integer) 0
127.0.0.1:6379[1]> setnx name william009
(integer) 0
127.0.0.1:6379[1]> get name
"william008"
10、SETRANGE key offset value
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
127.0.0.1:6379[1]> get name
"william008"
127.0.0.1:6379[1]> setrange name 4 jack
(integer) 10
127.0.0.1:6379[1]> get name
"willjack08"
设置为从第四位开始替换
william008 -> willjack08 jack替换了4个字符
11、STRLEN key
返回 key 所储存的字符串值的长度。
127.0.0.1:6379[1]> get name
"willjack08"
127.0.0.1:6379[1]> strlen name
(integer) 10
12、MSET key value [key value ...]
同时设置一个或多个 key-value 对。
127.0.0.1:6379[1]> mset key1 value key2 value2
OK
127.0.0.1:6379[1]> get key1
"value"
127.0.0.1:6379[1]> get key2
"value2"
13、MSETNX key value [key value ...]
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
127.0.0.1:6379[1]> mset key1 value key2 value2
OK
127.0.0.1:6379[1]> get key1
"value"
127.0.0.1:6379[1]> get key2
"value2"
127.0.0.1:6379[1]> msetnx key3 value3 key1 value
(integer) 0
127.0.0.1:6379[1]> get key3
(nil)
**所有给定的可以都不存在才执行,否则全部不执行
14、PSETEX key milliseconds value
这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
127.0.0.1:6379[1]> psetex name 3000 william
OK
127.0.0.1:6379[1]> get name
"william"
127.0.0.1:6379[1]> get name
(nil)
15、INCR key
将 key 中储存的数字值增一。
127.0.0.1:6379[1]> set name 11
OK
127.0.0.1:6379[1]> incr name
(integer) 12
前提是value里面的值都是纯数字
16、INCRBY key increment
将 key 所储存的值加上给定的增量值(increment)
127.0.0.1:6379[1]> get name
"25"
127.0.0.1:6379[1]> incrby name 5
(integer) 30
17、INCRBYFLOAT key increment
将 key 所储存的值加上给定的浮点增量值(increment) 。
127.0.0.1:6379[1]> get name
"30"
127.0.0.1:6379[1]> incrbyfloat name 0.3
"30.3"
18、DECR key
将 key 中储存的数字值减一。
127.0.0.1:6379[1]> set name 23
OK
127.0.0.1:6379[1]> decr name
(integer) 22
19、DECRBY key decrement
key 所储存的值减去给定的减量值(decrement) 。
127.0.0.1:6379[1]> get name
"19"
127.0.0.1:6379[1]> decrby name 3
(integer) 16
20、APPEND key value
如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。
127.0.0.1:6379[1]> append name ww
(integer) 4
127.0.0.1:6379[1]> get name
"16ww"
以上就是目前知道的所有关于String的操作命令了。
整理了一下,以后即可直接使用 。
Redis 数据类型
Redis支持5种数据类型:
string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)
本段介绍一下Hash(哈希)。
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
待完善
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis hash 命令
下表列出了 redis hash 基本的相关命令:
1、HSET key field value
将哈希表 key 中的字段 field 的值设为 value 。
127.0.0.1:6379[1]> hset hashkey key1 value
(integer) 1
2、HGET key field
获取存储在哈希表中指定字段的值。
127.0.0.1:6379[1]> hget hashkey
127.0.0.1:6379[1]> hget hashkey key1 "value"
127.0.0.1:6379[1]> hset hashkey key1 value2
(integer) 0
127.0.0.1:6379[1]> hget hashkey key1
"value2"
** 后一次赋值会覆盖之前的赋值
3、HDEL key field1 [field2]
删除一个或多个哈希表字段
127.0.0.1:6379[1]> hdel hashkey key2
如果想要删除的key不存在,则返回 0
(integer) 0
127.0.0.1:6379[1]> hdel hashkey key1
(integer) 1
4、HEXISTS key field
查看哈希表 key 中,指定的字段是否存在。
127.0.0.1:6379[1]> hexists hashkey key2
(integer) 0 返回个数,不存在返回0 个
127.0.0.1:6379[1]> hexists hashkey key1
(integer) 1 返回个数
5、HGETALL key
获取在哈希表中指定 key 的所有字段和值
127.0.0.1:6379[1]> hgetall hashkey
1) "key1" 字段
2) "value2" 值
3) "key2" 字段
4) "value2" 值
6、 HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
127.0.0.1:6379[1]> hset hashkey key3 15
(integer) 1
127.0.0.1:6379[1]> hincrby hashkey key3 1
(integer) 16
7、 HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
127.0.0.1:6379[1]> hset hashkey key4 15.7
(integer) 1
127.0.0.1:6379[1]> hincrbyfloat hashkey key4 0.1
"15.8"
8、 HKEYS key 获取所有哈希表中的字段
127.0.0.1:6379[1]> hkeys hashkey
1) "key1"
2) "key2"
3) "key3"
4) "key4"
9、HVALS key 获取哈希表中所有值
127.0.0.1:6379[1]> hvals hashkey
1) "value2"
2) "value2"
3) "16"
4) "15.8"
10、HSETNX key field value
只有在字段 field 不存在时,设置哈希表字段的值。
127.0.0.1:6379[1]> hkeys hashkey
1) "key1"
2) "key2"
3) "key3"
4) "key4"
127.0.0.1:6379[1]> hvals hashkey
1) "value2"
2) "value2"
3) "16"
4) "15.8"
127.0.0.1:6379[1]> hsetnx hashkey key2 valuenew2
(integer) 0
因为已经存在key2了, 所以不执行。hash记录依然为value2
127.0.0.1:6379[1]> hget hashkey key2
"value2"
127.0.0.1:6379[1]>
11、HLEN key 获取哈希表中字段的数量
127.0.0.1:6379[1]> hkeys hashkey
1) "key1"
2) "key2"
3) "key3"
4) "key4"
127.0.0.1:6379[1]> hlen hashkey
(integer) 4
12、HMGET key field1 [field2] 获取所有给定字段的值
127.0.0.1:6379[1]> hmget hashkey key1 key3
1) "value2"
2) "16"
13、HMSET key field1 value1 [field2 value2 ]
同时将多个 field-value (域-值)对设置到哈希表 key 中。
127.0.0.1:6379[1]> hmset hashkey key5 value5 key6 value6
OK
127.0.0.1:6379[1]> hkeys hashkey
1) "key1"
2) "key2"
3) "key3"
4) "key4"
5) "key5"
6) "key6"
参考资源:
http://www.runoob.com/redis/redis-strings.html
更多命令请参考:
https://redis.io/commands