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日志文件位置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!