Redis常见数据类型
Redis键(KEY)
keys *:查看当前数据库中的所有key
eixsts key:查看在redis中是否存在这个key
type key:查看键的数据类型
del key:删除掉对应的键值对
unlink key:这个也是键值对的删除操作,但是真正的删除是延后进行的,在后续一部操作中完成
expire key 10:时间以秒为单位,表示key键值对的过期时间
ttl key:查看key的生存时间,-2表示已经过期,-1表示永久不过去
dbsize:查看当前数据库中的key的数量
flushdb:清空当前数据库
flushall:清空所有的数据库
字符串
string是redis中最基本的数据类型。它是二进制安全的,这就表示string类型数据可以包含所有类型的数据,例如jpg图片或者序列化对象。一个字符串value值最多可以达到512M大小
常见命令
set key value:为数据库添加对应的键值对,如果set已经存在的key,那么将会进行覆盖,之前存在的value将会被新的替换掉
get key:查询对应key的value值
append key value:在原来存在的键值对中,在旧value的后面添加新value
strlen key:获得value的长度
setnx key value:这个和set的功能相似,但是如果key-value已经存在,那么就不会成功
incr key (step):将这个key对应的value自增1;如果为空,那么就设置成1
devr key (step):和incr真好相反,是自减;这两个都是原子操作,不可打断
mset key1 value1 key2 value2 ...:同时设置一个或者多个key-value
mget key1 key2:同时设置一个或者多个value值
msetnx key1 value1 key2 value2:和mset相类似,但是只要有一个key-value没有设置成功,所有的key-value都会被回滚
getrange key start end:例:
getrange name 0 3获取value一定范围内的内容
setrange name 3 abc就是在name对应的value值,第三位的位置,添加abc字符串
setex ket 过期时间 value:在设置key-value的同时设置过期时间
getset key value:以新的value取代旧的value
Redis列表(list)
在Redis中的列表是单键多值,列表式简单的字符串列表,可以在列表的左右两侧进行操作。它的底层逻辑是一个双向列表,两段的操作性能很高,但是中间节点的操作性能会比较差。
常见命令
lpush/rpush key value1 value2...:从左侧或者右侧插入一个或者多个数据。
lpop/rpop key:从这个key-value对中,从左侧或者右侧输出一个值,其中值得注意的是,如果key对应的value值已经没有了,key就会消亡。
rpoplpush key1 key2:表示从k1列表的右边pop出一个数据,从k2列表的左边push进去
lrange key start end:从左边开始取值,取一定范围内的数据
lindex key <index>:按照索引下标取元素(从左到右)
llen key:获取列表长度
linsert key before oldvalue newvalue:在oldvalue后面插入newvalue
lrem key n value:从左边删除n个value值
lset key index value:将列表key下标为index的值替换为value
数据结构
list的数据结构是quicklist快速链表。
在列表元素比较少的情况下会使用一块连续的内存存储,这是一个压缩列表。它吧所有的元素紧挨着一起存储,分配的是一块连续的内存。当数据量比较多的时候会改成quicklist。
Redis集合(set)
set和list功能上相类似,但是set相比于list具备自动排重的功能,也就是说一个key的value值不会出现重复
常见命令
sadd key value1 value2:向集合中添加value值,也是创建key-value(set)的方式
smembers key:取出这个集合的所有value
sismember ket value:判断集合key是否含有value,如果有就返回1,如果没有就是0
scard key:返回该集合的元素个数
srem key value1 value2:删除集合中的某个元素
spop key:随机从集合中pop出一个value
srandmember key n:从集合中随机输出n个value值,但是不会将其删除
smove source destination value:移动集合中的一个数据到另一个集合中
sinter key1 key2:返回两个集合的交集value
sunion key1 key2:返回两个集合的并集value
sdiff key1 key2:返回两个集合的差集value
数据结构
redis中的set数据结构内部也使用hash结构,所有的value都指向同一个内部值
Redis 哈希(HASH)
redis hash是一个key-value集合,其中value又是一个string类型的field和value的映射表,特别适合存储对象。
常见命令
hset key field value:给key集合中的field赋值为value
hmset ket filed1 value1 filed2 value2:一次性设置多个
hget key field:获取对应的value
hexists key filed:查看是否存在
hkeys key:查看所有的field
hvals key:查看集合中的所有value
hincrby key field step:自增
hsetnx key filed value:如果field已经存在,就不可以添加,如果不存在就可以添加。
数据结构
有两种数据结构:ziplist压缩列表、hashtable哈希表,当数据少的时候使用ziplist如果数据比较多就使用hashtable
Reids有序集合(Zset)
zset和set非常现实,是一个没有重复元素的字符串集合。而zset会依据不同value的score值对数据进行排序
常见命令
zadd key score1 value1 score2 value2 ...:添加value以及对应到score
zrange key start end:查询输出一定范围内的数据,withscores可以将score和value一起返回
zrangebyscore key maxmin:依据score的大小进行排列
zincrby key step value:给key中的一个value的score增加一定的数值
zrem key value:删除zset中的某个成员
zcount key start end:统计score范围内有多少成员
zrank key value:查看这个value成员的排名(依据score)
数据结构
zset有两种数据结构,一个是hash表,另一个是跳跃表
Redis新数据类型
Bitmaps
这个数据类型主要进行数据操作
命令行
setbit key offset value:对每个bit为进行操作,offset表示操作的bit为,将其设置为value值。在默认情况下,每个bit都是0
getbit key offset:获取对应是value对应的bit位
botcunt key start end:统计这个范围内的bit,有多少位是1
bitop and(or/xor/not) key0 key1 key2:进行交集,并集等操作,结果存储到key0中
HyperLogLog
HyperLogLog键只需要花费12kb内存,就可以直接计算接近2^64个不同元素的基数(不重复数据的个数 )。
命令
pfadd key element1 element2:为key添加value,如果已经在原本的value集合中存在就不会被添加
pfcount key:用于统计value的数量
pfmerge key1 key2 key3...:合并功能,把key2及后面的value都合并进入到key1中
GeoSpatial
GEO是地理信息的缩写,该类型就是元素的2维坐标,就是地图上的经纬度
命令
geoadd key value1 value2 member:参数是经度,维度,地点名,可以一次性添加多个
geopos key member :获取指定key和地点的坐标
geodist key member1 member2 距离单位:获取两个位置之间的直线距离
georadius key value1 value2 distance 距离单位:查询key对应的地点中,以value1、value2为中心,以distance为半径查找范围内的地点
本文详细介绍了Redis中的五大数据类型:键(KEY)、字符串、列表、集合和哈希,以及有序集合。讲解了各类数据类型的特性、常用操作命令,如设置、获取、删除等,并提及了数据结构实现,如压缩列表和哈希表。此外,还提到了Redis的Bitmaps、HyperLogLog和GeoSpatial等新数据类型及其操作方法。

被折叠的 条评论
为什么被折叠?



