登录/注册 登录
密码登录 验证码登录 忘记密码
快捷登录/注册
Upload
提交

Redis的五种常用数据类型

String字符串


Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以存储任何东西,512 M为上限,主要的还是操作键值对。


String的数据结构是简单的Key-Value模型,Value可以是字符串,也可以是数字。


应用场景


计数器—点赞,视频播放量,每播放一次就+1

统计多单位的数量

粉丝数

对象缓存存储


命令
普通添加 set key value
设置过期时间 setex key seconds value
设置过期时间 EXPIRE key seconds 
不存在则设置,否则创建失败 setnx key value
获取值 get key 
批量获取或设置值 mget key1 key2 | mset key1 value1 key2 value2
自增 incr key  | incrby key 10
自减 decr key  | decrby key 10
value追加(key不存在则设置) append key value 
获取字符串长度 strlen key
截去指定索引的字符串 getrange key 0 4
从指定索引开始替换字符串 setrange key 0 value
示例
set set value


Hash散列表


Redis 的哈希是键值对的集合。

Redis 的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象,还有用户信息之类的,经常变动的信息。

Hash更适合用于对象的存储,String更适合字符串存储




使用场景


主要用于存储部分变更数据,比如存储用户信息等等


命令 
获取一个哈希键的值 hget key field
存储一个或多个哈希是键值对的集合 hmset key field1 value1 field2 value2
获取多个指定的键的值 hmset key field1  field2 
判断哈希表中的字段名是否存在  hexists key field
删除一个或多个字段 hdel key field
获取一个哈希是键值对的集合  hgetall key
只返回字段值 hvals key
只返回字段名 hkeys key
返回hash的元素个数 hlen key
指定增量value hincrby key field value
如果该键不存在就创建,如果该键存在就创建失败 hsetnx key field value
模糊搜索 HSCAN key '0' match *cFosSpeed*  COUNT 10

示例
hset hset a1 b1 #存储一个或多个哈希是键值对的集合
hset hset a2 b2
hmset hset aa1 bb1 aa2 bb2 aa3 bb3 #存储一个或多个哈希是键值对的集合




List链表


命令
lpush key value: 向链表左侧添加—头插法
rpush key value: 向链表右侧添加–尾插法
lpop key: 从左边移出一个元素,就是从最左边的那个节点剔除掉。
rpop key: 从右边移出一个元素,就是从最右边的那个节点剔除掉。
lrange key start end : 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列表起始索引为 0。如果是要获取全部的元素:lrange key 0 -1
llen key: 返回链表中元素的个数 相当于关系型数据库中 select count(*)
lindex key indexnumber :lindex 命令用来返回指定索引的元素,索引从 0 开始,如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。如果要将列表类型当做数组来用,lindex 命令是必不可少的。
lset key indexnumber value: 是另一个通过索引操作列表的命令,它会将索引为 index的元素赋值为 value,原来的值会被覆盖。如果该列表不存在就会报错。所以使用这个命令之前先使用exists判断一下。
lrem key count value: 移除key链表中count个元素的value值,精确匹配,如果链表中可以有多个重复的值,这里的count指的是可以删除多个相同key的值。
ltrim list startIndex endIndex :通过下标截取指定的长度,这个时候list已经改变了,只剩下截断的元素。
rpoplpush source destination :移除当前的source链表中的最后一个元素,并且将该元素移动到destination链表当中。
linsert key BEFORE|AFTER pivot value:在key列表的pivot元素的前/后面插入元素value

示例
lpush  lpush a b c
rpush lpush aa bb cc
lpush lpush aa1 bb1 cc1




Set( 集合)


Redis 的集合是字符串的无序集合。

在Set集合当中,是不允许有重复的。

set是通过hash table实现的,可以进行添加、删除和查找。对集合我们可以取并集,交集,差集.



应用场景


微博、用户将所有关注的人都放入到一个set集合当中,将它的粉丝也放在一个集合中。

共同关注、共同爱好、二度好友、QQ的好友推荐(六度分割理论)



命令
sadd key value:添加一个 string 元素到,key 对应的 set 集合中, 成功返回 1,如果元素已经在集合中返回 0
scard key: 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0
smembers key: 返回 key 对应 set 的所有元素,结果是无序的
sismember key value: 判断 value 是否在 set 中,存在返回 10 表示不存在或者 key 不存在
srem key value: 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存在或者 key 不存在返回 0
srandmember key nums : 从key集合中随机抽取nums个元素。
spop key:随机删除一些key集合中的元素。
smove source destination member :将原集合source中的member元素移动到destination集合中。
sdiff key1 key2:取出key1中与key2集合的不同元素,差集
sinter key1 key2 :取key1与key2两个集合中相同的元素,交集
sunion key1 key2:将key1与key2两个集合中的元素合在一起,并集

示例
sadd sadd a1 3






SortedSet( 有序集合) zset


Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。


命令
zadd key score value: 将一个或多个 value 及其 socre 加入到 set 中
zrange key start end0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令相似)
zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数
zremrangebyscore key start end:可用于范围删除操作
zrangebyscore key min max: 升序排序操作,将key按最小值到最大值进行输出。zrevrange salary 0 -1:这个是倒序全部输出,也就是升序排序。
zrevrangebyscore key max min:倒序排序操作,将key按照从大到小排序输出
zrem key value : 删除指定的元素
zcard key :获取有序集合中的个数
zcount key min max: 获取指定区间的成员数量
zscore zset zhangsan 读取zhangsan的score 值
示例
zadd zadd 1 b1 2 b2




应用场景

  • 存储班级成绩表、工资表排序




Redis订阅


1、订阅指定的频道
SUBSCRIBE channel(频道名称)
2、向指定的频道发送消息
PUBLISH channel(频道名称) ”message“(具体信息)
3、退订指定的频道
UNSUBSCRIBE channel(频道名称)




Redis三种特殊的数据类型


本次介绍的三种特殊类型为:

  • Geospatial 地理位置
  • Hyperloglog 基数统计
  • Bitmap位图场景


感谢您的阅读,本文为正版软件资讯 | 阅木有原创内容,转载时请标注来源于正版软件资讯 | 阅木有和本文链接

评论