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 ofg
mget k1 k2 k3
一次性获取设置getset
方法
getset k4 abcd
先返回k4的值然后设置k4的值为abcd
incr和decr方法
- 对某个值进行递增和递减。
incr age
decr age
incrby和decrby方法
- 对某个值指定长度的递增和递减。
incrby age 5
增加5decrby age 6
减少6
append方法追加字符串
append key value
append 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
中添加hello
lrang
获取集合中的元素。
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在给定区间的数量