Redis学习之路(3)命令-String(字符串)、hash(哈希)的操作命令

      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(列表)的操作命令

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343