Redis基本类型和特殊类型命令详解

目录

基本类型

String类型

hash类型

List类型

Set集合

SortSet有序集合

特殊类型

geospatial 地理空间

hyperloglog

bitmaps



基本类型

String类型

String类型是Redis中的基本类型,一个key对应一个value、String类型的值可以是字符串,数字或者是二进制的数据,最大不超过512M。

set

添加数据 格式:set key value //成功则返回ok

get

获取值,通过key获取value 格式:get key

exists

判断key是否存在 格式:exists key

key存在则返回1,否则返回0

append

追加字符串,如果key存在,追加,key不存在,相当于set 格式:append key append_value

key存在,则直接进行添加数据并且返回当前数据的长度大小,否则就创建key和value返回0

strlen

获取字符串的长度 格式:strlen key

incr decr

对value进行自增1 格式:incr key

注意:value值只能是Integer类型,其他类型就会报错

对value进行自减1 格式:decr key

能够进行自增自减的字符串必须是数据字符串,否则抛出错误

如果对应key不存在,那么value的值会先被初始化为0,然后在执行incr操

incrby decrby

设置加的步长 格式:incrby key num

设置减的步长 格式:decrby key num

getrange

获取给定范围的字符串的值

格式:getrange key start stop

从0开始到指定长度n。如果是想获取全部内容则范围为:0 -1

hash类型

Redis中的哈希是一个String类型的filed和value的映射表,本身是一种键值对的结构,如下图所示

img

哈希类型很适合存储对象、哈希的命令都是以h开头,hset、hget...

hset

设置数据 格式:hset key filed1 value1 ...fieldn valuen

hget

获取数据 格式:hget key field

插入操作返回结果表示插入成功数据格式,也就是field的个数,filed属性是不能重复的

hmset

插入数据 格式:hmset key filed1 value1 ...fieldn valuen

hmget

批量获取数据 格式:hmget key field1...fieldn

hgetall

获取key中所有的value值

获取数据格式:hgetall  key

hdel

删除指定field的hash键值对 格式:hdel key filed

hlen

获取哈希中键值对的个数 格式:hlen key filed

hexists

判断哈希中字段是否存在 格式:hexists key filed

hkeys hvals

获取哈希中key的所有filed 格式:hkeys key

获取哈希中key的所有value 格式:hvals key

hincrby

给定哈希中字段的值加上一定步长 格式:hincrby key filed num

hsexnx

如果 不存在,则添加成功,如果存在,则失败 格式:hsetnx key filed value

List类型

列表是简单的字符串列表,按照插入顺序排序,数据是可以重复的。可以在头部和尾部进行插入和删除,

类似于Java中的LinkedList集合

可以使用该类型实现栈、队列等数据结构

img

lpush rpush

从list的左边插入值 格式:lpush key value

从list的右边插入值 格式:rpush key value

Xpush操作返回的是list中数据的个数

lrange

从list中获取指定范围的数据 格式:lrange key start stop

lpop rpop

从列表的左侧删除数据 格式:lpop key

从列表的右侧删除数据 格式:rpop key

lindex

获取指定下标的值 格式:lindex key index

llen

获取list中元素的个数 格式:llen key

lrem

删除list中元素 格式:lrem key count value

ltrim

截取列表中的值 格式:ltrim key start stop

rpoplpush

移除列表中的最后一个元素,将他添加到另一个列表中

格式:rpoplpush key1 key2

lset

根据下标替换列表中的值 格式:lset key index value

linsert

在列表中插入值 格式:linsert key before|after value new_value

在指定元素前或者后插入数据,如果指定数据重复,只找到第一个出现的元素在其前后插入即可

使用列表完成数据结构:

实现栈:lpush+lpop

实现队列:lpush+rpop

有限集合:lpush+ltrim

Set集合

redis中的set是String类型的无序集合,数据是无序的,并且属性元素是唯一的,意味着不能出现重复元素

命令都是以s开头的

sadd

给set中添加元素 格式:sadd key value1 value2...valuen

smembers

获取set中所有的值 格式:smembers key

sismember

判断某个元素是否在set中 格式:sismember key value

scard

获取set中元素的个数 格式:scard key

srem

删除set中的元素 格式:srem key value1 value2...

srandmember

从set中随机获取值 格式:srandmember key count

spop

随机删除指定元素格式 格式:spop key count

smove

将指定元素从一个set中移动到另一个set中 格式:smove set1 set2 value

sinter sunion sdiff

求集合的交并补集

SortSet有序集合

sortset和set类似,存在特征:集合中数据元素不能重复。有序集合可以实现元素排序,给定每个元素设置一个分数,作为排序依据。

注意:有序集合中元素是不能重复的,但是分数可以重复,有序集合一般是以z开头的

zadd

添加元素 格式:zadd key socre value

zrange

获取zset中一个范围的值 格式:zrange key start stop

zrangebyscore

按照zset中的score从小到大排序 格式:zrangebyscore key min max

zrem

删除zset中的元素 格式:zrem key value

zcard

查看zset中元素个数 格式:zcard key

zcount

更具score的值统计在给定区间的元素个数 格式:zcount key min max

特殊类型

geospatial 地理空间

主要用于存储地理位置信息,并对存储的信息进行操作,适用场景如定位、附近的人等。

城市经纬度查询:城市经纬度查询-国内城市经度纬度在线查询工具

这里介绍6个命令

  • geoadd 添加位置

  • geodist 返回给定位置距离

  • geohash 返回一个11字符的geohash字符串

  • geopos 返回给定名称经纬度

  • georadius 找到某一给定位置的半径内元素

  • georadiusbymember 以一成员变量为中心,查找指定半径范围内元素

geoadd

添加地理位置 格式:geoadd key 纬度 经度 名称

img

geopos

返回给定名称的纬度和经度 格式:geopos key 名称

img

geodist

返回两个给定位置之间的距离 格式:geodist key 名称1 名称2 距离单

img

geohash

返回一个11个字符的geohash字符串

img

georadius

以给定的经纬度为中心,找到某一个半径内的元素

img

georadiusbymember

以一个成员为中心,查找指定范围内容的元素

img

geo的底层是一个zset集合

img

hyperloglog

HyperLogLog 是用来做基数统计的算法,其优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。典型的使用场景是统计独立访客。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

基数的概念

比如数据集 {1, 3, 5, 7, 5, 7, 8},

那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。

基数估计就是在误差可接受的范围内,可以接受一定的误差,快速计算基数。

常见命令:

img

使用:

img

bitmaps

位图,可以认为是一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在 Bitmap 中叫做偏移量。Bitmap的长度与集合中元素个数无关,而是与基数的上限有关。bitmap是位图存储的,都是二进制来进行记录,所有只要是两种状态值的场景,都可以使用bitmaps来存储,比如:登录,未登录;打卡,未打卡;活跃,不活跃等

setbit

在bitmaps中添加数据 格式:setbit key offset value

img

getbit

查看位图上某个位置的值 格式:getbit key offset

img

bitcount

统计位图上value等于1的个数 格式:bitcount key start end

以上就是Redis的几种类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值