【redis】数据类型

来源:互联网 发布:网络大专 自考本科 编辑:程序博客网 时间:2024/06/01 09:36

           Redis是一个分布式缓存,也是一个noSql数据库,我们最了解的是Sqlserver或者mysql在使用这些数据库的时候,我们都要涉及到数据类型,redis也不例外。所以接下来我们就一起来看一看redis的数据类型和我们经常使用的数据类型有什么区别。

 

一、字符串类型(String)

       字符串类型时Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。一个字符串类型件允许存储的数据的最大容量是512M。

        使用场景:String是场景的一种数据类型,普通的key/value存储都可以归为此类,value其实不仅是String。比如统计网址的访问次数,就可以使用该数据类型。

       

赋值

SET Key value

Key="hello"

取值

GET key

Hello

递增数字

INCR num

字符串为整型,返回递增后的值

增加指定整数

INCRBY key increment

指定一次增加的数值

减少指定的整数

DECR key decrement

让键值递减一定的数值

增加指定浮点数

INCRBYFLOAT key increment

 

向尾部追加值

APPEND  key value

 

获取字符串长度

STRLEN key

 

同时获得/设置多个键值

MGET keyMSET key value[ key value…]

 


二、散列类型(Hash)

         Redis是采用字典结构以键值对的形式存储,而散列类型的键值也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他的数据类型。散列类型常用的场景就是用来存储一个用户信息对象,它实际上是内部存储的value为一个HashMap。

         我们也可以试想用String来存储,比如要存储一辆汽车。

         Set car  “白色,奥迪,80万”

         当我们要修改的时候需要拿到所有的信息。增加了序列化/反序列化的开销。

 

HSET key field value

插入操作返回1,更新操作返回0

取值

HGET key field

 

设置多个字段

HMSET key field1 value1 field2 value2

 

取多个字段值

HMGET key field1 field2

 

得到所有字段及值

HGETALL key

 

判断字段是否存在

HEXISTS key field

 

不存在赋值

HSETNX key field value

 

增加数字

HINCRBY key field increment

 

删除

HDEL key field[field]

 

只获取字段名或字段值

HKEYS key

 

获得字段数量

HLEN key

 



三、列表类型(List)

        List可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。不过使用链表的代价是通过索引访问元素比较慢,设想我需要找到第1000个元素,这样查找起来就相对有点慢了。当我们需要使用关注列表、粉丝列表等就可以使用Redis的list结构来实现。

两端添加元素

LPUSH key value

Rpush key value

从两端弹出元素

LPOP key

Rpop key      

获取列表中元素个数

LLEN key

获取列表片段

LRANGE key start stop

删除列表中指定的值

LREN key count value(删除前count个值为value的元素)

获得/设置指定索引的元素值

LINDEX key index, LSET key index value

只保留列表指定片段

LTRIM key start end

向列表中插入元素

LINSERT key BEFORE/AFTER pivot value

将元素从一个列表转向另一个列表

RPOPLPUSH source destination



四、集合类型(Set)

      集合类型和列表很相似,集合类型存储的数据是无序的而且具有唯一性,所以当需要存储一个列表数据,又不希望出现重复数据时,使用set也许是一个很好的选择,比如当我们查询一个人的关注列表时我们可以将其放入集合中。

      Set的内部实现是一个value永远为null的HashMap,实际就是通过计算hash的方式来去重。

增加/删除元素

SADD key member

SREM key member

 

获得集合中的所有元素

SMEMBERS key

 

判断元素是否在集合中

SISMEMBER key member

 

集合间运算

SDIFF key差集

SINTER key交集

SUNION key并集

 

获得/设置指定索引的元素值

LINDEX key index

LSET key index value

 

只保留列表指定片段

LTRIM key start end

 

向列表中插入元素

LINSERT key BEFORE

 

获得集合中元素个数

SCARD key

 

进行集合运算并将结果存储

SDIFFSTORE destination key

SINTERSTORE destination key

SUNIONSTORE destination key

 

随机获得集合中元素

SRANDMEMBER key [count]

count为正,获得不重复

为负,可能重复

从集合中弹出一个元素

SPOP key

 



五、有序集合(Sorted set)

      有序集合与集合的区别就是“有序”,它可以通过用户提供一个优先级参数来为元素排序,并且是插入有序的。当需要一个有序且不重复的集合列表可以使用有序集合。

增加元素

ZADD key score member

向有序集合中计入一个元素和该元素的分数

获得元素分数

ZSCORE key member

 

获得某范围元素列表

ZRANGE key start stop

ZREVRANGE key start stop

 

获得指定分数范围的元素

ZRANGEBYSCORE key min max

 

 

 

增加某个元素分数

ZINCRBY key increment member

 



                    以上就是redis中的几个基本的数据类型,对于redis的数据类型最重要的还是要知道每个数据类型的应用场景,当然这需要我们多实践,在实践中慢慢体会redis的数据类型的应用场景。

0 0