redis基础数据类型详解
总阅读次
redis类型
- redis一共分为五种基本数据类型:
String、Hash、List、Set、ZSet。 - 查看redis命令帮助
help 命令名String类型
String类型是包含很多种类型的特殊类型,并且是二进制安全的。比如序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串,数值等。set、get和del方法:
- 设置值:
set name redis - 取值:
get name - 删除值:
del name
使用setnx (not exist)
- 表示如果不存在key进行设置,返回1。存在就不需要设置了,返回012127.0.0.1:6379> setnx name aa(integer) 0
使用setex (expired)
set color 10 red设置color的有效期为10秒,10秒返回nil(在redis中nil表示null)
使用setrange 替换字符串
set mail 123456@qq.com替换字符串setrange mail 5 abc(5表示从第几位开始替换,不包含开始位置,后面跟上替换的字符串),如下图:
一次性设置或者获取多个值mset、mget 方法
mset k1 123 k2 abc k3 ofgmget k1 k2 k3
一次性获取设置getset方法
getset k4 abcd先返回k4的值然后设置k4的值为abcd
incr和decr方法
- 对某个值进行递增和递减。
incr agedecr age
incrby和decrby方法
- 对某个值指定长度的递增和递减。
incrby age 5增加5decrby age 6减少6
append方法追加字符串
append key valueappend name nosql为key为name的值追加nosql
strlen方法获取key的长度
strleng key返回该key的value的长度
Hash类型
Hash类型是String类型的field和value的映射表,或者说一个String集合。它特别适合存储对象,相比而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。
设置和获取Hash方法
- 通过
hset设置Hash类型的值。hset user id 1表示设置Hash的值为user,里面有key为id,value为1。 - 通过
hget获取Hash类型的值。hget user id表示获取Hash的值为user中key为id的值。 - 也可以批量设置和获取值。通过
hmset user id 2 name zs age 20 sex man和hmget user id name age sex

Hash类型的其他常用方法
- hsetnx:这个和
setnx类似,表示如果不存在就设置,存在就不设置。 - hincrby:集合递增,类似于
incrby。 - hexists:是否存在key,如果存在返回值,不存在返回0
- hlen:返回hash集合里面的所有键数值。
- hdel:删除指定hash中的字段。
- hkeys:返回hash中的所有key。
- hvales:返回hash中的所有value。
- hgetall:返回hash里的所有key和value。

List类型
List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。更加具体来说,List类型是一个双链表的结构,我们可以通过相关操作在集合的头部和尾部进行操作,List的可以作为栈,也可以作为队列。
lpush和lrange方法
lpush从头部加入元素(栈)先进后出,返回集合中元素个数。lpush list hello向名为list集合中添加hello。lrange获取栈的元素,返回集合中的元素。lrange list 0 -1获取list集合全部元素。
rpush方法
rpush方法从尾部加入元素,先进先出。rpush list2 hello向集合list2中添加hellolrang获取集合中的元素。
linsert方法
- 插入元素。
linsert num before three two
lset方法
- 将指定下标的元素替换掉。从0开始

lrem方法
- 删除元素,返回删除元素个数

ltrim方法
- 保留指定范围内的元素,截取集合

lpop方法
- 从list的头部删除元素,并返回删除元素

rpop方法
- 从list的尾部删除元素,并返回删除元素

Set类型
Set集合是String类型的无序集合,Set是通过HashTable实现的,对集合我们可以取交集、并集、差集。
sadd方法
- 向名称为key的set中添加元素。
sadd set1 abc也可以批量添加sadd set1 abc bdf - set集合不允许添加重复元素。

smembers方法
- 查看set集合元素。

srem方法
- 删除set集合元素

spop方法
- 随机返回删除的member

sdiff方法
- 返回两个集合的不同元素,哪个集合在前面就以哪个集合为标准。

sdiffstore方法
- 将返回的不同元素存储到另一个集合里。

sinter方法
- 两个集合取交集。

sinterstore方法
- 返回交集结果,存储到另一个集合中

sunion方法
- 取并集。

sunionstore方法
- 取并集,并存储到另一个集合中

smove方法
- 从一个set集合移动到另一个set集合,相当于剪切复制。

scard方法
- 返回集合的元素个数,
scard 集合名
sismember方法
- 判断某元素是否为集合中的元素,返回1代表是集合中的元素,0代表不是

srandmember方法
- 随机返回一个元素

zset集合类型
set集合的升级版,集合是有序的。
zadd方法
- 向有序集合中添加一个元素,该元素如果存在,则更新顺序。在重复插入的时候,会根据顺序属性更新。

zrange方法
- 查看zset集合数据。

zrem方法
- 删除名称为key的zset中的元素member

zincrby方法
- 以指定值去自增或自减,用法和incrby类似
zrangebyscore方法
- 找到指定区间范围的数据进行返回。

zremrangebyrank方法
- 删除索引范围的member

zremrangebyscore方法
- 删除指定序号,通过分数范围删除,包含头、包含尾

zrank方法
- 返回排序序号,从0开始

zrevrank方法
- 返回排序索引,从大到小的顺序,从0开始

zrangebyscore 方法
- 找到指定区间的数据并返回

- 通过上图我们可以看出
zrange和zrangebyscore方法的区别是,一个通过索引范围查找,一个通过分数范围查找
zcard方法
- 返回集合中所有元素的个数

zcount方法
- 返回集合中score在给定区间的数量


