数据库redis作业

数据库redis作业

redis9种数据类型的基本操作
redis持久化:分别启用rdb和aof,并查看是否有对应文件生成

作业1:redis9种数据类型的基本操作

1、key操作

key *

#查询所有的key
keys *

数据库redis作业_第1张图片
exists 参数

#参数:key
#判断该key是否存在,存在返回1,不存在返回0
exists key
#参数也可以是多个key,返回的的是存在key的数量
exists key1 key2

数据库redis作业_第2张图片

type 参数

#参数:key
#查看该key的类型
type key

数据库redis作业_第3张图片del 参数

#参数:key
#删除指定key数据
del key
#参数可以是多个key,作批量删除
del key1 key2

数据库redis作业_第4张图片
expire 参数 time

#参数:key
#time:秒数
#设置指定key经过10秒后过期
expire key 10

在这里插入图片描述
ttl 参数

#参数:key
#查看指定key的过期时间,-1表示永不过期,-2表示已过期
ttl key

数据库redis作业_第5张图片
move 参数1 参数2

#参数1:key
#参数2:dbindex[0-15]
#移动指定key到4号库
move key 4

数据库redis作业_第6张图片
select 参数

#参数:dbindex[0-15]
#切换到4号库
select 4

在这里插入图片描述
dbsize

#查看当前库key的数量
dbsize

在这里插入图片描述
flushdb

#清空当前库
flushdb

数据库redis作业_第7张图片

flushall

#清空所有库
flushall

在这里插入图片描述

2、String类型

String类型是Redis最基础和常见的数据类型,用于存储一个字符串。在Redis中,可以对String类型的值进行各种操作,如set、get、incr、append等,同时支持字符串的位操作。String类型通常用于缓存数据、计数器、分布式锁等场景。

get 参数

#查看键的值
get key

在这里插入图片描述

SET参数

#设置键,值
set key value

set 设置

格式:set 参数1 参数2 [参数3] [参数4] [参数5]

参数1:key名称
参数2:value
参数3:NX | XX
参数4:GET
参数5:EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL

数据库redis作业_第8张图片

设置k1的value为hello:

set k1 hello

在这里插入图片描述

如果k2存在直接返回nil,如果k2不存在,设置k2的value为hello:

set k2 hello NX

在这里插入图片描述

如果k3不存在直接返回nil,如果k3存在,设置k3的value为"hello":

set k3 hello XX

在这里插入图片描述

先返回k4原来的value再将k4的value修改为hello,如果k4不存在返回值为nil:

set k4 hello get

在这里插入图片描述

设置k5的value为hello,并在10秒后过期:

set k5 hello ex 10

在这里插入图片描述

设置k6的value为hello,并在500毫秒后过期:

set k6 hello px 500

在这里插入图片描述

设置k7的value为hello,并在到达时间戳1783219280秒过期:

set k7 hello exat 1783219280

在这里插入图片描述

设置k8的value为hello,并在到达时间戳1783219461238毫秒过期:

set k8 hello exat 1783219461238

在这里插入图片描述

设置k9的value为hello,并保留k9原先设定的过期时间:

set k9 hello keepttl

在这里插入图片描述

GETSET查询后设置

格式:getset 参数1 参数2

参数1:key名称
参数2:内容

先返回k1原来的value,再将value设置为hello

getset k1 hello

在这里插入图片描述

SETEX 过期值设置

格式:setex 参数1 参数2 参数3

参数1:key名称
参数2:秒
参数3:内容

设置k1的值为hello并在10秒后过期

setex k1 10 hello

在这里插入图片描述

SETNX 冲突设置

格式:setnx 参数1 参数2

参数1:key名称
参数2:内容

如果k1不存在,设置k1的值为hello

setnx k1 hello

在这里插入图片描述

MGET 批量查询

格式:mget 参数1

参数1:key列表

获取k1、k2的value

mget k1 k2

数据库redis作业_第9张图片

MSET 批量设置

格式:MSET 参数1

参数1:键值对列表

设置k1的value为v1、k2的value为v2

mset k1 v1 k2 v2

在这里插入图片描述

MSETNX NX规则批量设置

格式:MSETNX 参数1

参数1:键值对列表

如果不存在k1、k2(需都成立),则设置k1的value为v1、k2的value为v2

msetnx k1 v1 k2 v2

在这里插入图片描述

GETRANGE 精准截取

格式:getrange 参数1 参数2 参数3

参数1:key名称
参数2:起始位置
参数3:终止位置

获取key的value,并返回value的0 - 5位置上的字符

getrange key 0 5

在这里插入图片描述

SETRANGE 精准设置

格式:setrange 参数1 参数2 参数3

参数1:key名称
参数2:起始位置
参数3:字符串

将hello设置到k1对应value的索引1位置

setrange k1 1 hello

在这里插入图片描述

INCR 自增查询

格式:incr 参数1

参数1:key名称
注:key对应的value值必须为数字整型

使k10的value自增1并返回自增后的值

incr k10

数据库redis作业_第10张图片
INCRBY 增加查询

格式:incrby 参数1 参数2

参数1:key名称
参数2:数字整型
注:这里的key对应的value必须为数字整型

使k10的value增加5并返回增加后的值

incrby k10 5

数据库redis作业_第11张图片
DECR 自减查询

格式:decr参数1

参数1:key名称
注:这里的key对应的value必须为数字整型

使k10的value自减1并返回自增后的值

decr k10

数据库redis作业_第12张图片
DECRBY 增加查询

格式:decrby 参数1 参数2

参数1:key名称
参数2:数字整型
注:这里的key对应的value必须为数字整型

使k10的value减少5并返回减少后的值

decrby k10 5

数据库redis作业_第13张图片
STRLEN 获取字符串长度

格式:strlen 参数1

参数1:key名称

获取k1的value字符串长度

strlen k1

在这里插入图片描述
APPEND 追加内容

格式:append 参数1 参数2

参数1:key名称
参数2:内容

将hello追加到k1的value后

append k1 hello

数据库redis作业_第14张图片

3、List类型

LPUSH 左端插入

格式:lpush 参数1 参数2

参数1:list名称
参数2:插入的数据,可以是多个用空格隔

在list1左端依次插入hello、world

lpush list1 hello world

在这里插入图片描述
RPUSH 右端插入

格式:rpush 参数1 参数2

参数1:list名称
参数2:插入的数据,可以是多个用空格分隔

在list1右端依次插入hello、world

rpush list1 hello world

在这里插入图片描述
LRANGE 检索列表

格式:lrange 参数1 参数2 参数3

参数1:list名称
参数2:起始索引
参数3:终止索引

检索list1索引0到3的数据

lrange list1 0 3

数据库redis作业_第15张图片

LPOP 左端弹出

格式:lpop 参数1 [参数2]

参数1:list名称
参数2:数量

弹出list1左端第1条数据

lpop list1

在这里插入图片描述
RPOP 右端弹出

格式:rpop 参数1 [参数2]

参数1:list名称
参数2:数量

弹出list1右端第1条数据

rpop list1

在这里插入图片描述
LINDEX 检索指定索引数据

格式:lindex 参数1 参数2

参数1:list名称
参数2:索引

检索list1索引为1的数据

lindex list1 1

在这里插入图片描述
LLEN 检索数量

格式:llen 参数1

参数1:list名称

检索list1数据的条数

llen list1

在这里插入图片描述
LREM 删除值

格式:lrem 参数1 参数2 参数3

参数1:list名称
参数2:数量
参数3:指定值

在list1中删除1条值为hello的数据

lrem list1 1 hello

在这里插入图片描述
LTRIM 截取赋值

格式:ltrim 参数1 参数2 参数3

参数1:list名称
参数2:起始索引
参数3:终止索引

截取list1索引1到5的数据,将截取片段替换为list1的value

ltrim list1 1 5

在这里插入图片描述

RPOPLPUSH 弹出插入

格式:rpoplpush 参数1 参数2

参数1:list名称
参数2:list名称

将list1右端数据弹出,并将该数据压入list2的左端

rpoplpush list1 list2

数据库redis作业_第16张图片
LSET 修改

格式:lset 参数1 参数2 参数3

参数1:list名称
参数2:索引
参数3:值

将list1索引为3的值修改为hello

lset list1 3 hello

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

格式:linsert 参数1 参数2 参数3 参数4

参数1:list名称
参数2:before | after
参数3:已有值
参数4:新值

在list1插入一个新值world位置在hello前面

linsert list1 before hello world

在这里插入图片描述

在list2插入一个新值world位置在hello后面

linsert list2 after hello world

在这里插入图片描述

4、Hash(哈希)类型

HSET 设置

格式:hset 参数1 参数2

参数1:hash名称
参数2:键值对

在user01中添加一个键值对key为id、value为1

hset user01 id 1

在这里插入图片描述
HGET 获取

格式:hget 参数1 参数2

参数1:hash名称
参数2:内部key

获取user01的id

hget user01 id

在这里插入图片描述
HMSET 批量设置

格式:hmset 参数1 参数2

参数1:hash名称
参数2:键值对(可以多个使用空格分隔)

在user01中添加一个id值为1、name值为zhangsan

hmset user01 id 1 name zhangsan

在这里插入图片描述
HMGET 批量获取

格式:hmget 参数1 参数2

参数1:hash名称
参数2:内部key(可以多个使用空格分隔)

获取user01的id和name

hmget user01 id name

数据库redis作业_第17张图片
HGETALL 获取所有

格式:hgetall 参数1

参数1:hash名称

获取user01的所有内容

hgetall user01

数据库redis作业_第18张图片
HLEN 获取长度

格式:hlen 参数1

参数1:hash名称

获取user01的键值对数量

hlen user01

在这里插入图片描述
HDEL 删除键值对

格式:hdel 参数1 参数2

参数1:hash名称
参数2:内部key

删除user01的name键值对

hdel user01 name

在这里插入图片描述
HEXISTS 存在检索

格式:hexists 参数1 参数2

参数1:hash名称
参数2:内部key

检索user01是否存在name键

hexists user01 name

在这里插入图片描述
HKEYS 获取所有键

格式:hkeys 参数1

参数1:hash名称

获取user01的所有key

hkeys user01

在这里插入图片描述
HVALS 获取所有值

格式:hkeys 参数1

参数1:hash名称

获取user01的所有value

hvals user01

HINCRBY 整数加法

格式:hincrby 参数1 参数2 参数3

参数1:hash名称
参数2:内部key

示例:

对user01中age的value增加1

hincrby user01 age 1

在这里插入图片描述
HINCRBYFLOAT 浮点数加法

格式:hincrbyfloat 参数1 参数2 参数3

参数1:hash名称
参数2:内部key

对user01中score的value增加0.5

hincrbyfloat user01 score 0.5

在这里插入图片描述
HSETNX NX规则设置

格式:hsetnx 参数1 参数2

参数1:hash名称
参数2:键值对

如果user01中不存在id,则添加一个键值对key为id、value为1

hsetnx user01 id 1

在这里插入图片描述

5、Set(集合)类型

SADD 添加元素

格式:sadd 参数1 参数2

参数1:set名称
参数2:元素(可以多个使用空格分隔)

将hello、world添加到set1

sadd set1 hello world

在这里插入图片描述
SMEMBERS 遍历

格式:smembers 参数1

参数1:set名称

遍历set1

smembers set1

数据库redis作业_第19张图片
SISMEMBER 存在判断

格式:sismember 参数1 参数2

参数1:set名称
参数2:元素

判断hello是否存在于set1

sismember set1 hello

在这里插入图片描述
SREM 删除

格式:srem 参数1 参数2

参数1:set名称
参数2:元素

在set1中删除hello

srem set1 hello

在这里插入图片描述
SCARD 检索元素个数

格式:scard 参数1

参数1:set名称

检索set1中元素个数

scard set1

在这里插入图片描述
SRANDMEMBER 随机展示

格式:srandmember 参数1 参数2

参数1:set名称
参数2:数量

在set1随机展示2个元素

srandmember set1 2

在这里插入图片描述
SPOP 随机弹出

格式:spop 参数1 参数2

参数1:set名称
参数2:数量

在set1 随机弹出2个元素

spop set1 2

数据库redis作业_第20张图片
SMOVE 元素移动

格式:smove 参数1 参数2 参数3

参数1:数据源set名称
参数2:接收set名称
参数3:元素

将set1中的hello移动到set2

smove set1 set2 hello

数据库redis作业_第21张图片
SDIFF 差集

格式:sdiff 参数1 参数2

参数1:被差运算set
参数2:差运算set(可以多个用空格分隔)

检索在set1和set2中set1独有的元素

sdiff set1 set2

在这里插入图片描述
SUNION 并集

格式:sunion 参数1 参数2

参数1:set名称
参数2:set名称(可以多个用空格分隔)

检索set1、set2合并后的集合

sunion set1 set2

数据库redis作业_第22张图片
SINTER 交集

格式:sinter 参数1 参数2

参数1:set名称
参数2:set名称(可以多个用空格分隔)

检索set1和set2共有的元素,返回结果集

sinter set1 set2

数据库redis作业_第23张图片
SINTERCARD 交集(redis7新命令)

格式:sintercard 参数1 参数2 参数3

参数1:参与的set数量
参数2:参与的set名称(每个用空格分隔)
参数3:limit限制

检索set1和set2共有的元素,返回数量

sintercard 2 set1 set2

数据库redis作业_第24张图片

6、ZSet(有序集合)类型

ZADD 添加

格式:zadd 参数1 参数2 参数3

参数1:zset名称
参数2:zset元素(score value)(可以多个使用空格分隔)

在zset1添加一个元素score为60、value为hello

zadd zset1 60 hello

在这里插入图片描述
ZRANGE 遍历

格式:zrange 参数1 参数2 参数3 [参数4]

参数1:zset名称
参数2:起始索引
参数3:终止索引
参数4:withscores

遍历zset1所有元素

zrange zset1 0 -1

在这里插入图片描述
附带分数反转遍历zset1所有元素

zrevrange zset1 0 -1 withscores

在这里插入图片描述
ZRANGEBYSCORE 分数范围选取

格式:zrangebyscore 参数1 参数2 参数3 参数4 参数5

参数1:zset名称
参数2:最低分
参数3:最高分
参数4:withscores
参数5:limit 起始索引 步长

附带分数检索zset1中60到100分的元素

zrangebyscore zset1 60 100 withscores

在这里插入图片描述

检索zset1中60到100分的元素,限制从0开始步长为2

zrangebyscore zset1 60 100 limit 0 2

在这里插入图片描述
ZSCORE 检索分数

格式:zscore 参数1 参数2

参数1:zset名称
参数2:元素

检索zset1中v1元素的分数

zscore zset1 v1

在这里插入图片描述
ZCARD

格式:zcard 参数1

参数1:zset名称

检索zset1元素个数

zcard zset1

在这里插入图片描述
ZREM 删除

格式:zrem 参数1 参数2

参数1:zset名称
参数2:元素(可以多个使用空格分隔)

删除zset1中v1、v2元素

zrem zset1 v1 v2

在这里插入图片描述
ZINCRBY 增加分数

格式:zincrby 参数1 参数2 参数3

参数1:zset名称
参数2:分数
参数3:元素

将zset1中的v1元素的分数增加5分

zincrby zset1 5 v1

在这里插入图片描述

ZCOUNT 检索指定分数范围中的元素个数

格式:zcount 参数1 参数2 参数3

参数1:zset名称
参数2:最低分
参数3:最高分

检索zset1中60到100分的元素个数

zcount zset1 60 100

在这里插入图片描述
ZRANK 检索索引

格式:zrank 参数1 参数2

参数1:zset名称
参数2:元素

检索zset1中v1的索引号

zrank zset1 v1

在这里插入图片描述
ZREVRANK 检索反转索引

格式:zrevrank 参数1 参数2

参数1:zset名称
参数2:元素

反转检索zset1中v1的索引号

zrevrank zset1 v1

在这里插入图片描述

7、Bitmaps(位图)

SETBIT 设置

格式:setbit 参数1 参数2 参数3

参数1:bitmap名称
参数2:索引
参数3:值( 1 | 0 )

将bitmap1的第一个位置的值设为1

setbit bitmap1 1 1

在这里插入图片描述
GETBIT 检索

格式:getbit 参数1 参数2

参数1:bitmap名称
参数2:索引

检索bitmap1索引为2的值

getbit bitmap1 2

在这里插入图片描述
STRLEN 统计字节数

格式:strlen 参数1

参数1:bitmap名称

统计bitmap1占用的字节数(每8位占1字节)

strlen bitmap1

在这里插入图片描述
BITCOUNT 统计

格式:bitcount参数1 [参数2]

参数1:bitmap名称
参数2:范围(起始字节 终止字节)

统计bitmap1值为1的数量

bitcount bitmap1

在这里插入图片描述

统计bitmap1中0到1字节范围内值为1的数量

bitcount bitmap1 0 1

在这里插入图片描述
BITOP 位运算

格式:bittop 参数1 参数2 参数3

参数1:AND(与) | OR(或) | XOR(异或) | NOT(非)
参数2:存放的bitmap
参数3:参与运算的bitmap(空格分隔)

将bitmap1和bitmap2进行与运算并将结果存放在newbitmap

bitop and newbitmap bitmap1 bitmap2

在这里插入图片描述

将bitmap3进行非运算并将结果存放在newbitmap(非运算只能有一个bitmap)

bitop not newbitmap bitmap1

在这里插入图片描述

8、HyperLogLog

PFADD 添加

格式:pfadd 参数1 参数2

参数1:hyperLogLog名称
参数2:元素(可以多个,使用空格分隔

将zs、ls添加到p1中

pfadd p1 zs ls

在这里插入图片描述
PFCOUNT 统计

格式:pfcount 参数1

参数1:hyperLogLog名称(可以多个,使用空格分隔)

统计p1中的基数个数

pfcount p1

在这里插入图片描述
PFMERGE 合并

格式:pfmerge 参数1 参数2

参数1:接收结果hyperLogLog名称
参数2:hyperLogLog名称(使用空格分隔)

将p1、p2合并到newkey中

pfmerge newkey p1 p2

数据库redis作业_第25张图片

9、Geospatial(地理空间)

GEOADD 添加

格式:geo 参数1 参数2 参数3

参数1:geo名称
参数2:经度
参数3:纬度
参数4:描述

在city里面添加天安门、故宫的经纬度坐标

geoadd city 116.403963 39.915119 "天安门" 116.403414 39.924091 "故宫"

在这里插入图片描述
GEOPOS 返回经纬度

格式:geopos 参数1 参数2 参数3

参数1:geo名称
参数2:描述(可以多个,使用空格分隔)

返回故宫的经纬度

geopos city "故宫"

数据库redis作业_第26张图片
GEOHASH hash表示返回经纬度

格式:geohash参数1

参数1:geo名称
参数2:描述(可以多个,使用空格分隔)

hash表示返回故宫的经纬度

geohash city "故宫"

在这里插入图片描述
GEODIST 距离计算

格式:geodist 参数1 参数2 参数3

参数1:geo名称
参数2:描述1
参数3:描述2
参数3:单位( M | KM | FT | MI )

计算天安门和故宫相距多少KM

geodist city "天安门" "故宫" KM

在这里插入图片描述

作业2:redis持久化:分别启用rdb和aof,并查看是否有对应文件生成

RDB

1、修改配置文件名

根据redis.conf中的配置,快照将被写入dbfilename指定的文件中(默认是dump.rdb文件)
在这里插入图片描述

2、配置文件目录

根据redis.conf中的配置,快照将保存在dir选项指定的路径上,我们可以修改为指定目录,默认是根目录
在这里插入图片描述
修改完配置文件后,保存配置文件并重启服务

redis-server /etc/redis.conf  #保存配置文件
systemctl restart redis.service   #重启服务

在这里插入图片描述
可以看到下图,已经存在了dump.rdb文件
数据库redis作业_第27张图片

AOF

1、修改配置文件

通过修改redis.conf配置中appendonly yes来开启AOF持久化
通过appendfilename指定日志文件名字(默认为appendonly.aof)
通过appendfsync指定日志记录频率
在这里插入图片描述

2、配置选项

数据库redis作业_第28张图片

数据库redis作业_第29张图片
配置好redistribution.conf文件后,进入redis界面敲bgrewriteaof命令
在这里插入图片描述
后面在目录里就可以看见生成了一个appendonlydir目录,这个目录就是aof文件存放的默认目录,进入目录里,可以看见aof文件。
数据库redis作业_第30张图片
在这里插入图片描述

你可能感兴趣的:(数据库,redis,缓存)