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号库 select 1
默认16个库,可以在启动配置文件里设置,库为0~15
查看key:keys 正则表达式
# 正则表达式规则请自行查询 # 查看当前库的所有key keys * # 查看名称为1的key keys 1 # 查看包含*1*的key keys *1*
exists 查看key是否存在,type查看类型
# 查看key为1的是否存在 存在返回1 不存在返回0 exists 1 # 查看key为1的存储值的类型 type 1
del=unlink 删除 del是直接删 unlink是后续异步删除
# 删除key为3的数据 成功返回1 因为该key数据不存在不成功返回0 del 3 unlink 3 # 可以一次删掉多个数据 成功返回删掉的数量 # 删除key为2,3,4的数据 del 2 3 4
expire 设置有效时间 ttl查看有效时间
# 设置key为2的数据20秒有效时间 expire 2 20 # 查看key为2的有效时间还有多少 返回有效时间秒数 ttl 2
3.String数据(2进制存储,安全,最大512M,一开始是成倍追加,超过1M,1M1M增加。)类型的命令:
set与setnx:set设置更新值;setnx是新添,存在则不改变
# 设置key为1值为1的数据 set 1 1 # 更新key为1的值 set 1 2 # 对key为1追加字符123 成功返回该字符串的长度 append 1 123
get:获取
# 获取key为1对应的值 get 1
strlen:查看字符串长度
# 查看key为1对应的字符串长度 strlen 1
当string存储的是数字时的特殊命令:自增自减 incr/decr,incrby/decrby,incrbyfloat/incrbyfloat(浮点数增减必须附一个增减值)
# 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
# 设置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
# 取key为2的值的0到3位置的字符串 左包右包 getrange 2 0 3 # 加入key为2 对应 123456 上面这条命令返回1234
在指定位置插入字符串:setrange 注:该字符串长度不变,除非插入的字符串比之前长
# 从key为2对应的数据的下标为0的地方插入,替换掉俩个 setrange 2 0 11 # 假如 key为2对应123456 执行后key为2对应113456
getset:取旧换新,返回旧数据替换新数据
# 返回key为3对应的值并更新成. getset 3 .
4.List数据类型(快速链表,一个ziplist压缩列表,多了就是多个ziplist连接):
左插入与右插入:lpush/rpush
# 设置key为L1的一个列表 从左边依次插入 1 2 3 # 我默认顺序是从左到右 # 此时顺序是 3 2 1 lpush L1 1 2 3 # 同理 rpush L2 1 2 3 # 顺序为 1 2 3
左弹出与右弹出: lpop/rpop
# 从左弹出key为L1的1个 返回弹出的值 lpop L1 1 # 从右边弹出key为L1的2个 rpop L1 2
遍历查看: lrange 从左边遍历查看
# 从左边遍历查看所有的 lrange L1 0 -1 # 从左边遍历查看从0到2的3个数据 左包右包 lrange L1 0 2
获取对应下标的值:lindex
# 获取key为L1 下标为1的值 lindex L1 1
获取长度 llen
llen L1
设置对应的下标的值:lset
#设置key为L1的下标为2的值为123 lset L1 2 123
删除:lrem
# 从左边开始删除 1个值为22的数据 lrem L1 1 22 # 从右边开始删除 1个值为22的数据 lrem L1 -1 22
插入 linsert,目前只能是第一个值的,而不能固定第几个这个值
# 在第一个值为3的前面插入22 linsert L1 before "3" "33" # 在值为3的后面插入22 linsert L1 after "3" "33"
2022-07-20
5.set 自动排重 无序 结构是dict,使用hash表构造
设置新值: sadd
# 设置key为s1的set中添加值1,2,3 sadd s1 1 2 3 sadd s1 1 # 返回0 因为之前的s1中含有1
取出所有值:smembers
# 查看s1内的值 smembers s1
sismeber:查看值是否存在
# 查看1值是否存在在s1中 sismember s1 1
scard:查看元素个数
scard s1
spop:随机去出一个值,取出后set中删掉
# 在s1中随机取一个 spop s1 # 在s1中随机取俩个 spop s1 2
srandmeber:随机取出但不删除
# 随机在s1中取出3个值 srandmeber s1 3
集合与集合之间的操作:smove一个集合移动到一个集合;sinter交集;sunion并集;sdiff差集;
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已经取代。
#设置key为h1的值里的id-1 name-gd sex-man hset h1 id 1 name gd sex man hsetnx h1 age 18
取值:hget
# 取key为h1对应的value的id对应的值 hset h1 id
hkeys与hvals:
# 查看所有键所有值 hkeys h1 hvals h1
hexist:查看该键值对是否存在
# 查看h1中值中是否还有key为id的键值对 hexist h1 id
hincerby:增加,同字符串中数据的增加
7.Zset 有序集合 每个元素关联一个score,根据score的值排序
设置值:zadd
# 在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(从大到小)
# 顺序是按照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
# 把a队友的score+50 zincrby zs1 50 a
zrem:删除
# 删除 zs1中的a zrem zs1 a
zrank:查看排名
zrank zs1 a
zcount:查看满足score大小范围内的值
# 查看score在100到200内的值的数量 zcount zs1 100 200
7.配置文件
发现就一个有用的,部署时配到硬盘,设置密码,数据库数量,后台进程启用,和是否支持远程连接都不太重要。
logfile参数:配置生成log日志文件位置