redis的了解与学习

2022-07-19

1.redis编译后的bin目录下的基础命令介绍

redis-benchmark:性能测试工具

redis-check-apf:修复有问题的aof

redis-check-dump:修复有问题的dump.rdb

redis-sentinel:集群使用

redis-server:启动

redis-cli:客户端操作入口

2.操作基础命令:

清空当前库:flushdb
清空所有库:flushall
dbsize:查看库key数量
 select 库名:选择库
1
2
# 选择使用1号库
select 1
默认16个库,可以在启动配置文件里设置,库为0~15
查看key:keys 正则表达式
1
2
3
4
5
6
7
# 正则表达式规则请自行查询
# 查看当前库的所有key
keys *
# 查看名称为1的key
keys 1
# 查看包含*1*的key
keys *1*
exists 查看key是否存在,type查看类型
1
2
3
4
# 查看key为1的是否存在 存在返回1 不存在返回0
exists 1
# 查看key为1的存储值的类型
type 1
del=unlink 删除 del是直接删 unlink是后续异步删除
1
2
3
4
5
6
# 删除key为3的数据 成功返回1 因为该key数据不存在不成功返回0
del 3
unlink 3
# 可以一次删掉多个数据 成功返回删掉的数量
# 删除key为2,3,4的数据
del 2 3 4
expire 设置有效时间 ttl查看有效时间
1
2
3
4
# 设置key为2的数据20秒有效时间
expire 2 20
# 查看key为2的有效时间还有多少 返回有效时间秒数
ttl 2

3.String数据(2进制存储,安全,最大512M,一开始是成倍追加,超过1M,1M1M增加。)类型的命令:

set与setnx:set设置更新值;setnx是新添,存在则不改变
1
2
3
4
5
6
# 设置key为1值为1的数据
set 1 1
# 更新key为1的值
set 1 2
# 对key为1追加字符123 成功返回该字符串的长度
append 1 123
get:获取
1
2
# 获取key为1对应的值
get 1
strlen:查看字符串长度
1
2
# 查看key为1对应的字符串长度
strlen 1
当string存储的是数字时的特殊命令:自增自减 incr/decr,incrby/decrby,incrbyfloat/incrbyfloat(浮点数增减必须附一个增减值)
1
2
3
4
5
6
7
8
9
10
# key为1自增1
incr 1
# key为1自定义增
# 每次增加2
incrby 1 2
# key为1自减1
decr 1
# key为1自定义减
# 每次减少2
decrby 1 2
多个设置与多个获取:mset,mget,msetnx
1
2
3
4
5
6
7
# 设置3对应3的值与4对应4的值
mset 3 3 4 4
# 获取 1 2 3 4的值
mget 1 2 3 4
# msetnx 如果设置的key有一个存在则该条命令的设置都失败
mestnx 1 1 5 5 6 6
# 上面这条命令会因为key为1的数据存在而执行失败,因此没有新增key为5的数据与key为6的值
去指定key的指定位置的字符串:getrange
1
2
3
# 取key为2的值的0到3位置的字符串 左包右包
getrange 2 0 3
# 加入key为2 对应 123456 上面这条命令返回1234
在指定位置插入字符串:setrange 注:该字符串长度不变,除非插入的字符串比之前长
1
2
3
# 从key为2对应的数据的下标为0的地方插入,替换掉俩个
setrange 2 0 11
# 假如 key为2对应123456 执行后key为2对应113456
getset:取旧换新,返回旧数据替换新数据
1
2
# 返回key为3对应的值并更新成.
getset 3 .

4.List数据类型(快速链表,一个ziplist压缩列表,多了就是多个ziplist连接):

左插入与右插入:lpush/rpush
1
2
3
4
5
6
7
# 设置key为L1的一个列表 从左边依次插入 1 2 3
# 我默认顺序是从左到右
# 此时顺序是 3 2 1
lpush L1 1 2 3
# 同理
rpush L2 1 2 3
# 顺序为 1 2 3
左弹出与右弹出: lpop/rpop
1
2
3
4
# 从左弹出key为L1的1个 返回弹出的值
lpop L1 1
# 从右边弹出key为L1的2个
rpop L1 2
遍历查看: lrange 从左边遍历查看
1
2
3
4
# 从左边遍历查看所有的
lrange L1 0 -1
# 从左边遍历查看从0到2的3个数据 左包右包
lrange L1 0 2
获取对应下标的值:lindex
1
2
# 获取key为L1 下标为1的值
lindex L1 1
获取长度 llen
1
llen L1
设置对应的下标的值:lset
1
2
#设置key为L1的下标为2的值为123
lset L1 2 123
删除:lrem
1
2
3
4
# 从左边开始删除 1个值为22的数据
lrem L1 1 22
# 从右边开始删除 1个值为22的数据
lrem L1 -1 22
插入 linsert,目前只能是第一个值的,而不能固定第几个这个值
1
2
3
4
# 在第一个值为3的前面插入22
linsert L1 before "3" "33"
# 在值为3的后面插入22
linsert L1 after "3" "33"

 2022-07-20

5.set 自动排重 无序 结构是dict,使用hash表构造

设置新值: sadd

1
2
3
4
# 设置key为s1的set中添加值1,2,3
sadd s1 1 2 3
sadd s1 1
# 返回0 因为之前的s1中含有1
取出所有值:smembers
1
2
# 查看s1内的值
smembers s1
sismeber:查看值是否存在
1
2
# 查看1值是否存在在s1中
sismember s1 1
scard:查看元素个数
1
scard s1
spop:随机去出一个值,取出后set中删掉
1
2
3
4
# 在s1中随机取一个
spop s1
# 在s1中随机取俩个
spop s1 2
srandmeber:随机取出但不删除
1
2
# 随机在s1中取出3个值
srandmeber s1 3
集合与集合之间的操作:smove一个集合移动到一个集合;sinter交集;sunion并集;sdiff差集;
1
2
3
4
5
6
7
8
9
10
11
12
13
sadd s3 1 2 3
sadd s4 3 5 6
# 把s3中的1转移到s4中
move s3 s4 1
# 此时 s3:2,3 s4:1 3 5 6
# 查看交集
sinter s3 s4
# 3 # 查看并集
sunion s3 s4
# 1 2 3 5 6
# 查看差集 返回s3中有但是s4中没有的
sdiff s3 s4
# 2

6.hash 适合存储对象,长度少时使用ziplist长度多使用hashtable存贮

设置值:hset与hsetnx(存在就不添加,一次只能添加一个)
设置值中多个键值对:hmset,已经弃用,hset已经取代。
1
2
3
#设置key为h1的值里的id-1 name-gd sex-man
hset h1 id 1 name gd sex man
hsetnx h1 age 18
取值:hget
1
2
# 取key为h1对应的value的id对应的值
hset h1 id
hkeys与hvals:
1
2
3
# 查看所有键所有值
hkeys h1
hvals h1
hexist:查看该键值对是否存在
1
2
# 查看h1中值中是否还有key为id的键值对
hexist h1 id
hincerby:增加,同字符串中数据的增加

7.Zset 有序集合 每个元素关联一个score,根据score的值排序

设置值:zadd
1
2
3
4
# 在zs1中添加score为100的a
zadd zs1 100 a
# 添加200的b 300的c 150的d
zadd zs1 200 b 300 c 150 d
取值:zrange(根据排名返回);zrangebyscore(根据值的大小范围返回,从小到大与zrevrangebyscore(从大到小)
1
2
3
4
5
6
7
8
9
10
11
# 顺序是按照score从小到大
# 全取
zrange zs1 0 -1
# 取第一个
zrange zs1 0 0
# 全取显示source
zrange zs1 0 -1 withscores
# 返回score在100到200的值
zrangebyscore zs1 100 200
# 返回score在200到100的值
zrevrangebyscore zs1 200 100
zincrby:增加score
1
2
# 把a队友的score+50
zincrby zs1 50 a
zrem:删除
1
2
# 删除 zs1中的a
zrem zs1 a
zrank:查看排名
1
zrank zs1 a
zcount:查看满足score大小范围内的值
1
2
# 查看score在100到200内的值的数量
zcount zs1 100 200

7.配置文件

发现就一个有用的,部署时配到硬盘,设置密码,数据库数量,后台进程启用,和是否支持远程连接都不太重要。
logfile参数:配置生成log日志文件位置

 

 

posted @   Abandoned_Software  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示