redis基本类型和使用方法详解

2020-02-07 18:01:47王振洲

127.0.0.1:6379> getset foo hi ##设置新值,返回旧值nil
(nil)
127.0.0.1:6379> get foo
"hi"
127.0.0.1:6379> setex foo 2 hello ##设置键值对,2秒失效
OK
127.0.0.1:6379> get foo ##没失效时,返回值
"hello"
127.0.0.1:6379> get foo ##失效之后,返回nil
(nil)
127.0.0.1:6379> set foo hello
OK
127.0.0.1:6379> setrange foo 1 appy ##替换index=1之后的字符串
(integer) 5
127.0.0.1:6379> get foo
"happy"
127.0.0.1:6379> setrange foo 1 ee
(integer) 5 ##返回修改后的长度
127.0.0.1:6379> get foo ##替换两个字符
"heepy"
127.0.0.1:6379> setrange foo 8 day
(integer) 11  
127.0.0.1:6379> get foo
"heepyx00x00x00day"
127.0.0.1:6379> get bar
(nil)
127.0.0.1:6379> setrange bar 2 ee ##bar的值为nil,补充两个0x00
(integer) 4
127.0.0.1:6379> get bar
"x00x00ee"
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> msetnx key1 hi key2 hi ##key2不存在,不修改
(integer) 0
127.0.0.1:6379> mget key1 key2 ## key2依然为nil
1) "hello"
2) (nil)

hash

HSET key field value

HGET key field

HMSET key field value [field value ... ]

HMGET key field [field ...]

HGETALL key

HEXISTS key field

HSETNX key field value 字段不存在时赋值。 与HSET类型,区别在于,如果字段存在,HSETNX不执行任何操作。

HINCRBY key filed increment 如果key、field不存在,自动创建,键值为0,再增值。

HDEL key field [field...] 这是删除的是key:field,不能直接删除key。如果要删除key,使用DEL命令。

HEYS key 只获取字段名

HVALS key 只获取字段值

HLEN key 获得字段数量

127.0.0.1:6379> HMSET g1class1 xiaoming 001 xiaohong 002 tom 003 hanmeimei 004
OK
127.0.0.1:6379> HGETALL g1class1 
1) "xiaoming"
2) "001"
3) "xiaohong"
4) "002"
5) "tom"
6) "003"
7) "hanmeimei"
8) "004"
127.0.0.1:6379> HKEYS g1class1
1) "xiaoming"
2) "xiaohong"
3) "tom"
4) "hanmeimei"
127.0.0.1:6379> HLEN g1class1
(integer) 4
127.0.0.1:6379> HGET g1class1 xiaohong
"002"
127.0.0.1:6379> HSET g1class1 lilei 005 ##het新值时,返回1
(integer) 1
127.0.0.1:6379> hset g1class1 xiaohong 007 ## hset更新值时,返回0
(integer) 0
127.0.0.1:6379> hsetnx g1class1 tom 008 ##已存在的值,不操作
(integer) 0
127.0.0.1:6379> hget g1class1 tom ##已存在的值,更新不生效,还是003
"003"
127.0.0.1:6379> hdel g1class1 ##不能直接删除key
(error) ERR wrong number of arguments for 'hdel' command
127.0.0.1:6379> DEL g1class1 ##使用DEL删除key
(integer) 1
127.0.0.1:6379> hgetall g1class1 ##查询为空
(empty list or set)

用途

    用来存储分级数据。外部key作为prefix,是第一级key,hash中的key作为第二级key使用。 存储含有多个属性的对象,如一篇博客的各种属性:标题,标签,分类等。修改某个属性,不用操作整个博客内容。