Redis数据类型:
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1、String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
实例:
常用命令:
Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。
删除已存在的键。不存在的 key 会被忽略。
- 将 key 中储存的数字值增一:INCR KEY_NAME
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
- 将 key 中储存的数字值减一:DECR KEY_NAME
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
-
-
- 将 key 中储存的数字加上指定的增量值:INCRBY KEY_NAME INCR_AMOUNT
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
- 将 key 所储存的值减去指定的减量值:DECRBY KEY_NAME DECREMENT_AMOUNT
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
- 为指定的 key 追加值:APPEND KEY_NAME NEW_VALUE
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的 末尾。
如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
2、Hash(哈希)
Redis hash 是一个键名对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
实例:
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HGETALL 命令,user:1为键值。
每个 hash 可以存储 232 -1 键值对(40多亿)。
常用命令:
- 设置值:HSET KEY_NAME FIELD VALUE
Redis Hset 命令用于为哈希表中的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。
- 获取值:HGET KEY_NAME FIELD_NAME
Redis Hget 命令用于返回哈希表中指定字段的值。
Redis Hgetall 命令用于返回哈希表中,所有的字段和值。
在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度 是哈希表大小的两倍。
- 同时将多个 field-value (域-值)对设置到哈希表 key 中:HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN
Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。
此命令会覆盖哈希表中已存在的字段。
如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。
- 获取所有给定字段的值:HMGET KEY_NAME FIELD1...FIELDN
Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。
如果指定的字段不存在于哈希表,那么返回一个 nil 值。
- 删除一个或多个哈希表字段:HDEL KEY_NAME FIELD1.. FIELDN
Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
- 为哈希表 key 中的指定字段的整数值加上增量 increment:HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER
Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。
- 查看哈希表 key 中,指定的字段是否存在;HEXISTS KEY_NAME FIELD_NAME
Redis Hexists 命令用于查看哈希表的指定字段是否存在。
如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。
- 获取哈希表中字段的数量:HLEN KEY_NAME
Redis Hlen 命令用于获取哈希表中字段的数量。
哈希表中字段的数量。 当 key 不存在时,返回 0 。
- 获取所有哈希表中的字段:HKEYS KEY_NAME
Redis Hkeys 命令用于获取哈希表中的所有字段名。
包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。
Redis Hvals 命令返回哈希表所有字段的值。
一个包含哈希表中所有值的表。 当 key 不存在时,返回一个空表。
3、List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
常用命令:
- 将一个或多个值插入到列表头部: LPUSH KEY_NAME VALUE1.. VALUEN
Redis Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。
eg:127.0.0.1:6379> lpush mylist a b c
- 在列表中添加一个或多个值:RPUSH KEY_NAME VALUE1..VALUEN
Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。
如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。
eg:127.0.0.1:6379> rpush mylist2 a b c
- 获取列表指定范围内的元素: LRANGE KEY_NAME START END
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
eg:127.0.0.1:6379> lrange mylist 0 5
127.0.0.1:6379> lrange mylist2 0 -1
- 移出并获取列表的第一个元素:LPOP KEY_NAME
Redis Lpop 命令用于移除并返回列表的第一个元素。
eg:127.0.0.1:6379> lpop mylist
- 移除并获取列表最后一个元素:RPOP KEY_NAME
Redis Rpop 命令用于移除并返回列表的最后一个元素。
eg:127.0.0.1:6379> rpop mylist2
Redis Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。
eg:127.0.0.1:6379> llen mylist
- 将一个或多个值插入到已存在的列表头部: LPUSHX KEY_NAME VALUE1.. VALUEN
Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。
eg:127.0.0.1:6379> lpushx mylist x
- 为已存在的列表添加值:RPUSHX KEY_NAME VALUE1..VALUEN
Redis Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。
eg:127.0.0.1:6379> rpushx mylist2 4
- 移除列表元素: LREM KEY_NAME COUNT VALUE
Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
eg:127.0.0.1:6379> lrem mylist3 2 2 从头开始删除两个键值为2的数据
eg:127.0.0.1:6379> lrem mylist3 -2 2 从末尾开始删除两个键值为2的数据
eg:127.0.0.1:6379> lrem mylist3 0 1 删除所有键值为1的数据
- 通过索引设置列表元素的值:LSET KEY_NAME INDEX VALUE
Redis Lset 通过索引来设置元素的值。
当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
eg:127.0.0.1:6379> lset mylist 3 cc
- 在列表的元素前或者后插入元素: LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
Redis Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
eg:127.0.0.1:6379> linsert mylist3 before b 888
127.0.0.1:6379> linsert mylist3 after b 999
- 移除列表的最后一个元素,并将该元素添加到另一个列表并返回:RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
eg:127.0.0.1:6379> rpoplpush mylist5 mylist6
4、Set(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
注意:以上实例中 lisi添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
5、zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有