美文网首页
Redis学习之路(3)命令-String(字符串)、hash(

Redis学习之路(3)命令-String(字符串)、hash(

作者: William_Wei007 | 来源:发表于2018-08-30 17:16 被阅读23次

      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

上一篇:Redis学习之路(二)-命令           下一篇Redis学习之路(四)-list(列表)的操作命令

相关文章

网友评论

      本文标题:Redis学习之路(3)命令-String(字符串)、hash(

      本文链接:https://www.haomeiwen.com/subject/wcqdwftx.html