Redis
1.Redis数据结构介绍
- Redis是一个key-value的数据库,key的数据类型是string类型,value的数据类型一般根据需求不同使用不同的数据类型。不过redis中的string类型与java中的String类型是不同的。
- Redis的数据类型分为8种
- 基本类型:string、Hash、List、Set、SortedSet
- 特殊类型:GEO、BitMap、HyperLog
- Redis的命令可以在官网( http://www.redis.cn/commands.html )中查询,其中已经将各个命令分门别类了。或者也可以在Redis中输入Help指令进行查询
2.Redis的数据结构之string
- string是redis中最基本的数据类型,你可以理解成Mencached一模一样的类型,一个key对应一个value。string类型是二进制安全的,意思是redis的string类型可以包含任何数据,例如图片或者序列化的对象。string类型的最大存储值512MB。
- 存储string的常用命令
-
赋值
set key value
-
取值
get key
-
删除
del key
del key1 key2 …
-
数值的递增与减
- incr key //会对这个key对应的值加1,如果key不存在创建key,值为1,如果key的值不是数字型字报错
- decr key //反之亦然
-
指定数值的增减量
- incrby key num //与上面大同小异,增加的值从1改为num
- decrby key num //反之亦然
-
append追加字符串,如果没有定义,直接赋值
append key string //在当前key的值后面拼接string,就算拼接值与被拼接值都是数值型也还是拼接
3.Redis的数据结构值哈希
- 存储的value是一个hash结构,而hash结构就是一个String 可以和String value组成的map容器。Hash特别适合用户存储对象,Redis中每个Hash可以存储2^32-1键值对(4283867295)。
- 存储Hash常用的命令
-
赋值
-
存储单个字段
hset key fieldname fieldvalue
-
存储多个字段
hset key fieldname1 fieldvalue1 fieldname2 fieldvalue2…
-
-
取值
-
获取指定key的指定属性的值
hget key fieldname
-
获取指定key的多个属性的值
hmget key fieldname1 fieldname2…
-
获取指定key的所有属性值
hgetall key
-
-
删除
-
删除指定key的单个或多个属性
hdel key fieldname1 fieldname2
-
-
增加数字
-
给某个属性值为整数的值添加num
hincrby key fieldname num
-
-
判断key是否存在
-
判断某个key对应的属性是否存在,1表示存在,0则表示不存在
hexists key fieldname
-
-
获取hash属性的个数
-
获取hash的属性的个数
hlen key
-
-
获取hash的所有属性
-
获取hash的所有属性名
hkeys key
-
获取所有的属性的值
hvals key
-
4.Redis的数据结构值list
- Redis列表中的最简单的字符串类表,插入顺序排序,你可以添加一个元素到列表的头部或者尾部,同样的一个列表最多可以包含2^32-1个元素。
- 存储list常用的命令
-
两端添加
-
从左边开始添加
lpush key value1 value2…
-
从右边开始添加
rpush key value1 value2…
-
获取指定范围的集合元素
Irange key 开始下标 结束下标(不知晓长度,结束下标可以-1代表,意思是取到最后一位)
-
往list头部插入元素(只能插入单个元素)
lpushx key value
-
往list尾部插入元素(同上)
rpushx key value
-
-
两端弹出
-
从list头部弹出集合元素
lpop key(会返回一个值便是弹出的头部值,在list列表中已经将这个值删除)
-
从list尾部弹出几何元素
rpop key(同上)
-
查看list集合的元素的个数
llen key
-
从list集合的指定的方向删除指定个数的指定元素
lrem key count value
其中count为整数从左往右删count个数,反之亦然,value则为删除的值,如果count为0则表示删除所有
-
修改指定下标上的值
lset key index value(既然是下标则index从0开始算)
-
在指定位置插入指定的元素
linsert key before/after value1 value2
before是在value1前面插入value2
反之在后
-
把某个集合的尾部元素弹出并插入到另外一个集合的头部
rpoplpush key1 key2
将key1尾部的元素弹出删除,然后添加到key2的头部
-
5.Redis数据结构值Set
- set与list类型不同于java中的特性如出一辙,set不可出现重复元素,并且元素的顺序是无序的。set的使用场景就是在各种一些唯一的数据。
- set集合常用的方法
-
添加set集合
sadd key menber1 menber2 menber3 …
-
查看set集合的元素
smembers key(查看对应key中的所有元素)
-
删除set集合中的元素
srem key value1 value2 …(写几个就删除对应的几个)
-
判断set集合中某个元素是否存在,返回1表示存在,返回0表示不存在
sismember key value
-
判断集合中是否包含某元素,返回1则是包含,返回0则是不包含
sismember key value
-
计算多个集合的差集
sdiff key1 key2(统计的是在key1中存在的,在key2中不存在的,也就是说以左为尊)
-
计算多个集合的交集
sinter key1 key2(统计在两个集合中都存在的元素)
-
计算多个集合的并集
sunion key1 key2(将两个集合的元素何在一起,然后去重)
-
计算集合的元素个数
scard key
6.Redis的数据结构值sorted-set/ZSet
- sorted-set与set的区别在于前者的成员在集合中的位置是有序的,他的适用场景是:需要对于数据进行排行的时候使用。
- sorted-set常用指令
-
添加元素,为什么他的元素可以是有序的,因为他可以给值额外添加一个评分的值,然后通过这个值进行排序
zadd key score1 value1 score2 value2…
1.sorted-set集合的默认排序是按照评分的升序进行排序
2.如果我们继续给集合添加元素,如果元素已经存在则覆盖,不存在则添加
-
查找元素
zrange 开始下标 结束下标
注意 -1表示最后一个,默认的是评分的升序排序
因此查找所有的元素
zrange -1 0
如果想要把元素的评分也打印出来,则在后面添加withscores
zrange 开始下标 结束下标 withscores
-
删除元素
zrem key value1 value2…
与set中的删除无异,也是删除对应值,写几个删除几个
-
查看集合的元素个数
zcard key
-
降序打印集合的元素
zrevrange key 开始下标 结束位置 [withscores]
-
根据集体的评分范围来删除元素
zremrangebyscore key min max
这里的区间是前闭后闭区间,两边都包含
-
根据评分范围来查找元素
zrangebyscore key min max [withscore] [limit 开始位置 页面大小]
后面的limit与mysql中的用法无异
-
给指定的元素加分
zincrby key score value
value是你的元素名,score是你所需要加的分数
-
查找指定评分范围的元素个数
zcount key min max