博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis数据类型
阅读量:6395 次
发布时间:2019-06-23

本文共 5741 字,大约阅读时间需要 19 分钟。

  hot3.png

Strings - 字符串

Redis的字符串是字节序列。在Redis中字符串是二进制安全的,这意味着他们有一个已知的长度,是没有任何特殊字符终止决定的,所以可以存储任何东西,最大长度可达512兆。

例子

redis 127.0.0.1:6379> SET name "yiibai"OKredis 127.0.0.1:6379> GET name"yiibai"

在上面的例子使用Redis命令set和get,Redis的名称是yiibai的键存储在Redis的字符串值。

注:字符串值可以存储最大512兆字节的长度。

String类型支持的命令

set key value 设置key对应String类型的值,返回1表示成功,返回0表示失败   
setnx key value 如果key不存在,设置key对应String类型的值。如果key已经存在,返回0
get key 获取key对应String值,如果key不存在则返回nil。
getset key value 先获取key对应String值,再设置key的值,如果key不存在,则返回nil
mget key1 key2....keyN 一次获取多个key的值,如果对应key不存在,则对应返回nil
mset key1 value1..keyN vlaueN 一次设置多个key的值,成功返回1。失败返回0,表示没有任何值被设置
msetnx key1 value1..keyN vlaueN 一次设置多个key的值,但是不会覆盖已经存在的key
incr key 向key对应的值加1,并返回新值。如果key的值不是int,则返回错误,incr一个不存在的key时,则设置key的值1
decr key 向key对应的值减1,并返回新值。如果key的值不是int,则返回错误,incr一个不存在的key时,则设置key的值-1
incrby key integer 向key对应的值增加一个指定的整数integer,如果key的值不是int,则返回错误,如果key不存在,则默认之前key为0
decrby key integer 向key对应的值减一个指定的整数integer,如果key的值不是int,则返回错误,如果key不存在,则默认之前key为0

Hashes - 哈希值

Redis的哈希键值对的集合。 Redis的哈希值是字符串字段和字符串值之间的映射,所以它们被用来表示对象

例子

redis 127.0.0.1:6379> HMSET user:1 username yiibai password yiibai points 200OKredis 127.0.0.1:6379> HGETALL user:11) "username"2) "yiibai"3) "password"4) "yiibai"5) "points"6) "200"

在上面的例子中的哈希数据类型,用于存储包含用户的基本信息用户的对象。这里HMSET,HEXTALL对于Redis 命令 user:1 是键。

每个哈希可存储多达232 - 1个 字段 - 值对(超过4十亿)。

Hash类型支持的命令

hset key field value 设置key对应的Hash对象中指定域的值。如果key对应的hash对象不存在,则创建此hash对象。如果指定的对象已经存在,则其值重写。
hget key field 返回与field域关联的值,如果该域不存在或者key对应的hash对象不存在则返回nil
hmget key field1 field2 ...fieldN 返回存储在key对应的hash对象中各个指定域相关的值,如果不存在则,对应返回nil
hmset key field1 value1...fieldN valueN 设置多个存储在key对应的hash对象中指定域的值,该命令会复写已经存在的值,如果key对应的对象不存在,则创建此hash对象
hincrby key field integer 将储存在key的hash对象field域相关联的值加上integer,如果key对应的hash对象不存在,则创建此对象。如果field域不存在或者为一个不能表示整型的字符串值,则在执行该操作前设置为0
hexists key field 查看指定field域是否已经存在,存在返回1,不存在返回0
hdel key field 删除指定field域的,返回1。如果指定的域或key不存在,返回值为0
hlen key 返回key对应的hash对象中field数,如果key不存在,则返回0
hkeys key 返回key对应的hash对象中所有的field名称
hvals key 返回key对应的hash对象中所有的值
hgetall key 返回key对应的hash对象中所有域和相关的值,在返回值中,每个域名称后面跟着相关联的值

Lists - 列表

Redis的列表是简单的字符串列表,排序插入顺序。可以添加元素到Redis列表的头部或尾部。

例子

redis 127.0.0.1:6379> lpush tutoriallist redis(integer) 1redis 127.0.0.1:6379> lpush tutoriallist mongodb(integer) 2redis 127.0.0.1:6379> lpush tutoriallist rabitmq(integer) 3redis 127.0.0.1:6379> lrange tutoriallist 0 101) "rabitmq"2) "mongodb"3) "redis"

列表的最大长度为232- 1元素(4294967295,每个列表中的元素超过4十亿)。

List类型支持的命令

lpush key string 向key对应List头部增加一个字符串元素,成功返回1,失败返回0
rpush key string 向key对应List尾部增加一个字符串元素,成功返回1,失败返回0
llen key 返回key对应List的长度,如果key不存在则返回0,如果key对应类型不是list则返回错误
lrange key start end 返回指定区间(start~end)的元素,下表从0开始,负值表示从尾部开始计算,key不存在返回空列表
ltrim key start end 截取List指定区间内(start~end)的元素,成功返回1,key不存在返回错误.截取是指将除截取外的元素删除。如果end小于start则删除全部。
lset key index value 设置List指定下表为index元素的值,如果key或者index不存在,则返回错误
lrem key count value 删除一定数量(count绝对值)的匹配value的元素,count为正数时,从头部删除,count为负数时从尾部删除,count为0时,删除全部
lpop key 从list的头部删除并返回删除元素,如果key对应的list不存在或者为空,则返回nil,如果key的类型不为list则返回错误
rpop key 从list的尾部删除并返回删除元素,同lpop
blpop key [key1 [key2]..] timeout 从左到右扫描key-keyN,返回第一个非空List进行pop操作并返回操作的key以及lpop出的值。如果所有的list都是空或者不存 在,阻塞timeout秒,timeout为0时表示一直阻塞。阻塞时如果其他客户端对key-keyN中进行了push操作,阻塞解除并返回。如 果设置了timeout不为0,超时发生时返回nil
brpop key [key1 [key2]..] timeou 与blpop类似,不过是从右到左扫描

Sets - 集合

Redis集合是字符串的无序集合。在Redis中可以添加,删除和测试文件是否存在在O(1)的时间复杂度的成员。Set数据类型的优点是快速查找元素是否存在,用于记录一些不能重复的数据。

Set类型命令

sadd key member 增加一个String元素到key对应的set集合中,成功返回1,如果元素已经在集合中则返回0,如果key对应的set不存在则返回错误。
srem key member 从key对应的set集合中删除指定的member,成功则返回1,如果member不存在或者key不存在,则返回0,如果key对应的set不存在则返回错误。
spop key 删除并返回key对应set集合中随机一个元素,如果set为空或者key对应的set集合不存在则返回nil
srandmember key 同spop,随机取set中的一个元素,但不删除元素
smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应的set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key对应的值不是set类型,则返回错误
scard key 返回set的元素的个数,如果set是空或者key不存在返回0
sismember key member 判断member是否在set中,存在返回1,不存在或者key对应的set集合不存在返回0
sinter key1 key2...keyN 返回所有给定key的交集
sinterstore dstkey key1...keyN 同sinter,同时将交集存到dstkey对应的set集合中
sunion key1...keyN 返回所有给定key的并集
sunionstore dstkey key1...keyN 同sunion,同时将并集存到dstkey对应的set集合中
sdiff key1...keyN 返回所有给定key的差集
sdiffstore dstkey key1....keyN 同sdiff,同时将差集存到dstkey对应的set集合中
smembers key 返回key对应set的所有元素,结果是无序的

例子

redis 127.0.0.1:6379> sadd tutoriallist redis(integer) 1redis 127.0.0.1:6379> sadd tutoriallist mongodb(integer) 1redis 127.0.0.1:6379> sadd tutoriallist rabitmq(integer) 1redis 127.0.0.1:6379> sadd tutoriallist rabitmq(integer) 0redis 127.0.0.1:6379> smembers tutoriallist1) "rabitmq"2) "mongodb"3) "redis"

注意:在上面的例子中rabitmq设置属性加两次,但由于唯一性只加一次。

成员中集最大数量为232 - 1(4294967295,集合成员超过4十亿)。

 

Sorted Set类型

Sorted Set类型与Set类型类似。不同的是,Set是无序的,而Sorted Set是有序的集合,Sorted Set通过一个double类型的整数score进行排序。Sorted Set通过SkipList(跳跃表)和HashTable组合而成,SkipList负责排序功能,而HashTable负责保存数据

zadd key score member 添加元素member到集合,元素在集合中存在则更新对应的score
zrem key member 删除指定元素,1表示成功,如果元素不存在返回0
zincrby key incr member 增加对应member的score值,并且重新排序,返回更新后的score值
zrank key member 返回指定元素在集合中的排名(下标),集合中元素按score从小到大排序
zrevrank key member 同zrank,但是集合中的元素按score从大到小排序
zrange key start end 从集合中指定区间的元素。返回结果按score顺序排序
zrevrange key start end 同zrange,返回结果按score逆序排序
zrangebyscore key min max 返回集合中score在给定区间的元素
zcount key min max 返回集合中score在给定区间的数量
zcard key 返回集合中元素的个数
zscore key element 返回给定元素的score值
zremrangebyrank key min max 删除集合中排名在给定区间的元素
zremrangebyscore key min max 删除集合中score在给定区间的元素

例子

redis 127.0.0.1:6379> zadd tutoriallist 0 redis(integer) 1redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb(integer) 1redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq(integer) 1redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq(integer) 0redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 10001) "redis"2) "mongodb"3) "rabitmq"

转载于:https://my.oschina.net/hanyk/blog/786770

你可能感兴趣的文章
详细介绍MySQL/MariaDB的锁
查看>>
0603-Zuul构建API Gateway-通过Zuul上传文件,禁用Zuul的Filter
查看>>
cocos2dx-2.x CCFileUtils文件管理分析(2)
查看>>
Emacs中多个golang项目的配置方法
查看>>
未知宽高div水平垂直居中3种方法
查看>>
Vim替换查找
查看>>
如何用sysbench做好IO性能测试
查看>>
利用线性回归模型进行卫星轨道预报
查看>>
懒加载和预加载
查看>>
前端面试题
查看>>
Python的赋值、浅拷贝、深拷贝
查看>>
用python操作mysql数据库(之代码归类)
查看>>
ArcGIS Server 10.1 SP1连续查询出现Unable to complete operation错误
查看>>
执行./configure报checking for g++... no错误
查看>>
Dojo学习笔记(十一):Dojo布局——嵌套样例
查看>>
Appium for Android元素定位方法
查看>>
pfSense LAGG(链路聚合)设置
查看>>
教学思路SQL之入门习题《学生成绩》 七.存储过程基础知识
查看>>
createrepo 无法使用解决
查看>>
.net安全类库
查看>>