redis基础2——key的基础使用、五大数据类型和三大特殊数据类型

文章目录

一、Key的基础使用

  • redis默认有16个数据库,默认使用第0个数据库。

在这里插入图片描述
在这里插入图片描述

1.1 更换数据库

select

在这里插入图片描述

1.2 查看数据库大小

dbsize

在这里插入图片描述

1.3 查看数据库所有key

keys *

在这里插入图片描述

1.4 清除当前数据库

flushdb

在这里插入图片描述

1.5 清除所有数据库

flushall

在这里插入图片描述

1.6 判断key是否存在

exists

在这里插入图片描述

1.7 移动key

move

在这里插入图片描述

1.8 设置key的过期时间

expire

在这里插入图片描述

1.9 查看key的数据类型

type

在这里插入图片描述

二、五大数据类型

在这里插入图片描述

2.1 字符串型(string)

字符串型使用场景比较多,比如抖音粉丝数这种就可以实现,也还可以做计数器、统计多单位的数量、对象缓存存储。

2.1.1 设置key值

2.1.1.1 普通赋值

set

在这里插入图片描述

  • set同一个key时,会覆盖之前的值。

在这里插入图片描述

2.1.1.2 不存在才赋值

setnx

在这里插入图片描述

2.1.1.3 批量赋值

mset

在这里插入图片描述

2.1.1.4 原子性批量赋值

msetnx:要么一起成功,要么一起失败,体现原子性。

在这里插入图片描述

2.1.1.5 设置对象

设置一个对象:set [对象] {条目1:内容1,条目2:内容2}

在这里插入图片描述

设置多个对象:set [对象1] {条目1:内容1,条目2:内容2} [对象2] {条目1:内容1,条目2:内容2}

在这里插入图片描述

2.1.1.6 追加

append

在这里插入图片描述

2.1.2 获取key值

2.1.2.1 普通取值

get

在这里插入图片描述

2.1.2.2 先取值再赋值

getset

在这里插入图片描述

2.1.2.3 获取key值长度

strlen

在这里插入图片描述

2.1.5 自增自减

2.1.5.1 自增一个值

incr

在这里插入图片描述

2.1.5.2 自减一个值

decr

在这里插入图片描述

2.1.5.3 设置步长自增

incrby

在这里插入图片描述

2.1.5.4 设置步长自减

decrby

在这里插入图片描述

2.1.6 范围取值

getrange

在这里插入图片描述

2.1.7 替换字符串

setrange

在这里插入图片描述

2.1.8 设置过期时间

setex =set with expire,单位为秒。

在这里插入图片描述

setex key seconds value =set key value ex seconds。单位为秒。

在这里插入图片描述

2.2 集合(set)

应用场景:共同关注、共同好友。

2.2.1 赋值

sadd

在这里插入图片描述

  • 用redis客户端连接显示效果
    在这里插入图片描述
  • set 集合里不能存在相同的值,插入相同值会失败。
    在这里插入图片描述

2.2.2 取值

2.2.2.1 所有元素

smembers

在这里插入图片描述

2.2.2.2 判断元素是否存在

sismember

在这里插入图片描述

2.2.2.3 获取集合里元素个数

scard

在这里插入图片描述

2.2.2.4 取随机元素

srandmember

在这里插入图片描述

2.2.2.5 差集

sdiff

在这里插入图片描述

2.2.2.6 交集

sinter

在这里插入图片描述

2.2.2.7 并集

sunion

在这里插入图片描述

2.2.3 删除

2.2.3.1 指定元素

srem

在这里插入图片描述

2.2.3.2 随机元素

spop

在这里插入图片描述

2.2.4 移动

smove

在这里插入图片描述

2.3 列表(list)

在redis里,可以把List当成栈、队列来使用。
list是一个链表,可以从左往右插入,也可以从右往左插入,还可以左右两边同时插入。
如果key不存在,会创建新的链表。
若把里面的所有元素移除,空链表也代表不存在。
从两边插入或改动值,效率最高;从中间元素操作,效率低。
使用场景:消息队列。

2.3.1 赋值

2.3.1.1 从左插入

lpush

在这里插入图片描述

  • 从左插入一个值

在这里插入图片描述

  • 从左插入多个值

在这里插入图片描述

2.3.1.2 从右插入

rpush

在这里插入图片描述

在这里插入图片描述

2.3.1.3 元素前后插入

linsert

在这里插入图片描述

2.3.1.4 指定下标赋值

lset

在这里插入图片描述

2.3.2 取值

2.3.2.1 查看所有元素

lrange

在这里插入图片描述

2.3.2.2 查看指定下标位元素

lindex

在这里插入图片描述

2.3.2.3 查询列表元素个数

llen

在这里插入图片描述

2.3.2.4 查询列表是否存在

exists

在这里插入图片描述

2.3.3.删除

2.3.3.1 从左删除

lpop,删除下标位为0的元素,也是最后进入的元素。

在这里插入图片描述

2.3.3.2 从右删除

rpop,删除下标位最末端的元素,也是第一个插入列表的元素。

在这里插入图片描述

2.3.3.3 删除指定元素

lrem

在这里插入图片描述

2.3.4 截取

2.3.4.1 截取下标范围的元素

ltrim

在这里插入图片描述

2.3.5 移动

2.3.5.1 移除列表最后一个元素到新列表中(组合命令)

rpoplpush
在这里插入图片描述

2.4 哈希(hash)

哈希是一个map集合,可以把它的key看成一个集合,而集合里是kv键值对的数据,类似 key- < key-value >,常用于对象存储。

2.4.1 赋值

2.4.1.1 单个哈希

hset

在这里插入图片描述

  • redis客户端展示效果

在这里插入图片描述

2.4.1.2 多个哈希

hmset

在这里插入图片描述

2.4.1.3 不存在才赋值

hsetnx

在这里插入图片描述

2.4.1.4 自增

hincrby,哈希没有自减命令,用自增负数实现自减。

在这里插入图片描述

2.4.2 取值

2.4.2.1 单个哈希

hget

在这里插入图片描述

2.4.2.2 多个哈希

hmget

在这里插入图片描述

2.4.2.3 获取集合内所有键值对

hgetall

在这里插入图片描述

2.4.2.4 获取所有key

hkeys

在这里插入图片描述

2.4.2.5 获取所有value

hvals

在这里插入图片描述

2.4.2.6 获取集合内的key数量

hlen

在这里插入图片描述

2.4.2.7 判断集合内的key是否存在

hexists

在这里插入图片描述

2.4.3 删除

2.4.3.1 删除指定key

hdel

  • 删除一个key

在这里插入图片描述

  • 删除多个key

在这里插入图片描述

2.5 有序集合(zset)

应用场景:抖音排行榜

2.5.1 赋值

zadd

在这里插入图片描述

  • redis客户端显示效果

在这里插入图片描述

2.5.2 取值

2.5.2.1 正序查询指定下标范围元素

zrange,可以把显示的结果看成一个从上往下排序的列表,正向排序就是从上往下数。

在这里插入图片描述

2.5.2.2 倒叙查询指定下标范围元素

zrevrange

在这里插入图片描述

2.5.2.3 查询集合内的元素个数

zcard

在这里插入图片描述

2.5.2.4 查询区间元素数量

zcount

在这里插入图片描述

2.5.3 排序

2.5.3.1 正序

zrangebyscore

  • 负无穷到正无穷,-inf,+inf

在这里插入图片描述

  • 排序结果带上分数

在这里插入图片描述

  • 只取结果小于特定值的元素(3000)

在这里插入图片描述

  • 排序结果只取0到1条

在这里插入图片描述

2.5.3.2 倒序

在这里插入图片描述

三、三种特殊数据类型

3.1 geospatial地理位置

3.1.1 赋值

3.1.1.1 添加

geoadd
作用:将给定的空间元素(纬度、经度、地名)添加到指定的键里面。
语法: geoadd key longitude latitude member…

  • geoadd 命令以标准的x,y格式接受参数,使用时必须先输入经度,然后再输入纬度。
  • geoadd 能够记录的坐标是有限的,非常接近地球两极区域的经纬度无法被索引。
  • 有效的经度介于 -180 ~ 180 度之间,有效的纬度介于 -85.05112878 ~ 85.05112878 度之间。当输入超出范围的经度或者纬度时,geoadd将返回一个错误。
  • 这些数据会以有序集的形式被储存在键里面,从而使得 georadius 和georadiusbymember 这样的命令可以在之后通过位置查询取得这些元素。
    应用场景:附近位置、微信摇一摇、滴滴打车等这类依赖于地理位置信息的功能。

在这里插入图片描述

3.1.2 取值

3.1.2.1 key内元素

zrange
用法:geo 的数据类型为 zset,可以用zrange取key内元素。

在这里插入图片描述

3.1.2.2 经纬度

geopos
作用:从Key里取给定位置元素的经度、维度。
语法:geopos key member [member1 member2 ]

在这里插入图片描述

3.1.2.3 两个位置的距离

geodist
作用:取两个给定位置之间的距离。如果两个位置之中,有一个不存在,则命令返回空值。
语法:geodist key member1 member2 [unit]
指定单位的参数 unit 必须是以下单位的其中一个:

  • m :表示单位为米
  • km :表示单位为千米
  • mi :表示单位为英里
  • ft :表示单位为英尺
  • 如果没有指定单位,geodist默认使用米作为单位。
  • geodist在计算距离时,会假设地球为完美的球形,在极限情况下,这一假设最大会造成0.5%的误差。

在这里插入图片描述

3.1.2.4 半径内的元素

georadius
作用:取以给定的经纬度为中心,给定半径内的元素。
语法:georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [asc] [desc] [count count]

3.1.2.4.1 返回元素名称

在这里插入图片描述

3.1.2.4.2 返回元素名称+中心距离

withdist (参数)

在这里插入图片描述

3.1.2.4.3 返回元素名称+经纬度

withcoord(参数)

在这里插入图片描述

3.1.2.4.4 限制返回元素个数

count (参数)

在这里插入图片描述

3.1.2.4.5 降序排序

desc(参数)

在这里插入图片描述

3.1.2.4.6 升序排序

asc(参数)

在这里插入图片描述

3.1.2.5 指定范围内的元素

georaidusbymember
作用:取出指定范围内的元素,中心点是由给定的位置元素决定。
语法:georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [asc] [desc] [count count]

在这里插入图片描述

3.1.2.6 经纬度字符串

geohash
作用:将二维经纬度转换为一维字符串,字符串越长表示位置更精确,两个字符串越相似表示距离越近。
语法:geohash key member [member1] [member2]

在这里插入图片描述

3.1.3 删除

3.1.3.1 指定元素

zrem
用法:GEO 没有提供删除成员的命令,但是因为 GEO 的底层实现是 zset,所以可以借用 zrem 命令实现对地理位置信息的删除。

在这里插入图片描述

3.2 HyperLogLog基数

3.2.1 基数作用

作用:用于集合,指集合中不重复的元素个数,可以接受误差。
示例:
A{1,3,5,7,9,8,7} ,基数为6。
B{1,3,5,7},基数为4。

3.2.2 概述

背景:redis在2.8.9版本添加了hyperloglog结构,用来做基数统计的算法。
优点:在输入元素的数量或体积非常大时,计算基数所需的空间总是固定的,并且是很小的。每个HyperLogLog键只占用12KB的内存,就可以计算接近2^64个不同元素的基数。
用途:HyperLogLog是一种算法,提供了不精确的去重计数方案。 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
应用场景:

  • 统计网页的浏览用户数量,一天内同一个用户多次访问只算一次。传统方案是使用set来保存用户id,然后统计set中的元素数量。
  • 传统方案只能承载少量用户,一旦用户数量大起来就需要消耗大量的空间。
  • 传统方案更偏重于保存用户,而非统计用户数量,使用传统方案可以达到目的,但吃力不讨好,而使用HyperLogLog最多需要12K就可以统计大量的用户数。
  • 尽管HyperLogLog大概有0.81%的错误率,但对于统计用户数量这种不需要很精确的数据是可以忽略不计的。

3.2.3 赋值

3.2.3.1 添加元素

pfadd
语法:pfadd key element [element…]

在这里插入图片描述

3.2.4 取值
3.2.4.1 获取基值

pfcount
语法:pfcount key [key1 key2 …]

在这里插入图片描述

3.2.5 合并

3.2.5.1 并集合并

pfmerge
语法:pfmerge destkey sourcekey [sourcekey1 sourcekey2…]

在这里插入图片描述

3.3 Bitmap位图

背景:Redis 从 2.2 版本增加了 Bitmap(位图)。
应用场景:

  • 可以统计用户一年的某些信息,如账户活跃或不活跃,登录或不登录,打卡或没打卡。如果使用普通的 key / value存储,则要记录 365 条记录,如果用户量很大,需要的空间也会很大。而Redis 提供了 Bitmap 位图这种数据结构,Bitmap 就是通过操作二进制位来进行记录,即为 0 和 1。
  • 如果要记录 365 天的打卡情况,使用 Bitmap 表示的形式大概如下:0101000111000111……,这样 365 天相当于 365 bit,又 1 字节 = 8 bit , 所以相当于使用 46 个字节即可。
  • BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态,其中的 key 就是对应元素本身。

3.3.1 赋值

3.3.1.1 单项赋值

setbit
语法:setbit key offset value 。设置key的第offset位为value(0或1)

在这里插入图片描述

3.3.2 取值

3.3.2.1 单项取值

getbit
语法:getbit key offset

在这里插入图片描述

  • 获取 offset 设置的值,未设置过默认返回 0。

在这里插入图片描述

3.3.2.2 统计

bitcount
语法:bitcount key [start,end] 统计key上位的值为1的个数。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百慕卿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值