Redis教程(二)Redis数据类型介绍与使用

一、Redis的数据类型

Redis 3.x版本中常用的数据类型有字符串类型、哈希类型、集合类型、有序集合类型与列表类型,合理使用正确的数据类型,可以有效的降低开发工作,对于在MySQL中一些需要复杂SQL才能完成的工作,在Redis中通过一条简单命令即可实现。

二、字符串类型

通常运用于分布式系统的session会话缓存共享、浏览计数器等,比如直播时的浏览量就可以使用incr、decr来实现,刷礼物时通过incrby命令来实现。字符串类型有点万金油,但是由于它需要额外的空间来记录数据长度、内存使用等元数据,当实际保存的数据本身很小时,元数据的空间开销反而显得就很大了。字符串类型的使用在上篇文章中已经讲到,这里不再累述

三、Hash类型

常当作数据库缓存使用,如商品购物车、用户或者产品的详情信息。哈希类型的数据适合存储对象,其数据结构有点像MySQL表中的一行数据,包含了多个字段。MySQL是一张表里存放了多个字段和值,而Redis的Hash类型就是一个key里存放了多个字段和值。由于一个Hash对应一个集合的数据,但是也只使用一个dictEntry来存储元数据,所以会比字符串类型的数据更节省内存空间

1、设置Redis Hash Key

# hset key field value
# hsetnx key field value
# hmset key field1 value1 field2 value2
hset tanglu age 30  #设置一个hash key,名为tanglu,然后age字段的值为30
hset tanglu sex male  #为tanglu新增一个sex字段,值位male
hmset tanglu height 175 weight 70  #一次新增多个字段

2、获取Redis Hash Key元素个数 

# hlen key
hlen tanglu  #显示结果为4,因为上面示例设置了age sex height weight一共4个字段

# hget key filed
# hmget key field1 field2  #获取多个值
hget tanglu name  #获取指定字段的值,get的时候必须写清楚表名和字段名
hmget tanglu height weight

3、获取Hash Key所有字段的值,同keys命令一样需谨慎使用 

hgetall key  #显示出该Hash类型的key下的所有字段和值,谨慎使用
hkeys key  #仅显示该Hash类型的key下的所有字段
hvals key  #和上一步相反,显示的是具体的值

Redis教程(二)Redis数据类型介绍与使用 

4、删除Hash Key中指定的字段和值 

hdel key field1 field2...

5、判断Hash Key字段是否存在,返回1代表存在,0代表不存在 

hexists key field  #一次只能跟一个字段

四、Redis list类型

list列表类型的数据一般用于消息队列(比如使用redis作为ES的消息队列,当发现ES没有日志进来的时候,可以先看redis消息队列中是否有数据),可以让一个key拥有多个value,且值可重复

lpush names tanglu  #从左边开始插入数据
lpush names tom
lpush names tanglu  #故意定义了重复的value
lrange names 0 -1  #获取列表里的全部值,0和-1是起始和结束范围,后进入的key的值反而是在前面的
lrange names 0 1  #获取第一个和第二个值
lrem names 1 tanglu  #移除一个值为tanglu的列,这里将会按照序号移除。如果要移除所有的话,序号写0
lpop names  #按照后进先出的方式读取列表里的数据,可当做消息队列
rpop names  #先进先出
del names  #删除列表

五、Redis集合

分为了有序集合(zset)和无序集合(set),集合内的元素不可重复。无序集合通过交集、差集或并集获得需要的数据,常用于社交软件共同好友、微博圈子,有序集合常用于排行榜。

sadd ages 25
sadd ages 30
sadd ages 32
sadd ages 25  #重复定义,会添加失败
smembers ages  #显示集合中的元素,由于是无序的,不用再指定序号
srem ages 25  #移除一个元素
sismember ages 30  #检查集合中有没有30这个元素

 

上一篇:概率小回忆


下一篇:拆分表中sheet