Redis数据类型

来源:互联网 发布:spark sql 官网 编辑:程序博客网 时间:2024/05/17 23:33

Redis的数据类型

首先介绍下redis的使用过程:
redis作为一个数据库缓存,如果用户要取数据,则先会判断redis中是否存有数据,若redis中没有数据则从数据库中将数据取出(mysql等关系型数据),取出后会向redis中存一份数据,并向用户传送一份数据。(如同缓存一样)。这样子下回取数据可以直接在redis中存取,不用去访问数据库。
而redis的分布式则是表示,如果一个128G的redis不够用,则再加一个redis,这就表示分布式

1.redis的数据类型

(1)字符串-----String
(2)列表--------list
(3)散列--------hash
(4)集合--------set
(5)有序集合--zset

2.redis的常用命令:

(1)set key value
---向redis中存放键值对
(2)get key
---向redis中取出key所对应的value
(3)del key
---将redis中已经存储的key删除掉
(4)incr key
---使key所对应的值自增1,并返回其增加后的值
eg.
get key1  
>>"1"
incr key1
>>2
注意:刚开始得到的是一个字符类型,incr之后变为一个integer类型
(5)decr key
---与incr相反,incr是递增,decr就是递减。
(6)incrby key num
---意思是找到key所对应的value,并将其增加num。
eg.
get key1
>>10
incrby key1 10
>>20
还有许多常用命令,可以自己参考,这里不做详细描述。

3.Sting

若要使用redis存取对象应该怎么存储?
首先将对象先进行存储,再进行更新。
对象---》将对象变为json格式(String)---》redis
但是这种方法存在问题,若该对象有多个属性,但是只更新其中的一个属性,这样子再将其全部json化,并进行存储,仍然会造成资源浪费,而hash则很好的解决了这个问题。

4.散列(Hash)

其是hash相当于java中的map(HashMap),hash叫做散列类型。
一般应用于将redis作为分布式缓存,存出数据库中的数据对象。
注意字段值只能是String类型。不能是其他类型

常用命令:
(1)hset/hget:用来存取和取值
eg。
存值:
hset user username zhangsan
hset user password 123456
hset user age 20
取值:
hget user username
>>"zhangsan"
hget user age
>>"20"
(2)hmset/hmget:用来批量存储/取值
hset只能进行一个一个存取值,较为麻烦,因此选用hmset进行批量存储;hmget用来批量取值。
eg.
存值:
hmset user username zhangsan password 12345 age 20
取值:
hmget user username password age
(1)"zhangsan"
(2)"12345"
(3)"20"

(3)hgetall :用来读取对象的所有的属性值
eg.
hgetall user
(1)"zhangsan"
(2)"12345"
(3)"张三"
(4)"20"

(4)hdel:用来删除某个对象的某一个属性:
eg.
hdel user username
hget user username
>>(nil)---------------------这个表示为空的意思

5.List 类型

1.ArrayList与LinkedList的区别
ArrayList是基于数组去实现的,而LinkedList是基于双向循环链表实现的。
ArraytList是方便查询,LinkedList是方便于增加,删除,修改的。

2.redis中的list
redis中的list是通过LinkedList双向循环列表实现的。但是与其说是linkedList列表不如说其实是一个来实现的redis。

常用命令

(1)LPUSH key value [value....]
------向列表的左边增加元素
(2)RPUSH key value[value.....]
------向列表的右边增加元素
(3)LRANGE key start end
------获取列表中的某一段片段,将返回start,stop之间的元素,包含两端的元素,索引从0开始,若为-1表示最后一个。
(4)LPOP key
------从列表的左端弹出一个元素
(5)RPOP key
------从列表的右端弹出一个元素 

6.set集合

set是无序无重复的,而list是有序有重复的,这里redis中的set集合同样也是无序无重复的。 

常用命令
(1)SADD  key  member [member.....]
-----向集合中指定的key中增加元素
 
(2)SREM key member [member...]
-----向集合中指定的key中删除元素

(3)SMEMBERS key
-----查看集合中指定的key中所有的元素

(4)SISMEMBER key member
------判断元素是否在集合中,无论集合中有多少个元素都可以极速返回结果
------若存在返回1,不存在返回0 

7.有序集合zset

有序集合是sorted set但是我们将其称为zset是因为,在redis中有序集合的命令是以z开头的。

常用命令:
(1)ZSET key score member [score member]
------该命令的意思是将key值所对应的member值设置一个score,在之后的存取中会按照score对其进行排序。
eg.
zset user 90 username 80 age

  (2)ZSCORE key member
-------该命令的意思是获取key所对应的member中的score属性。

(3)ZREM key member [member]
-------移除有序集合的key所对应的一个或者多个成员
原创粉丝点击