Redis笔记
程序员文章站
2023-09-07 17:28:36
String类型操作 set key value get key 获取键位key的值 getset key value 先获取key的值再把值设置为value del key 删除值 incr key 将key的值增1 如果值不存在则默认设置为0再增1 如果非数字类型会失败并返回错误信息 decr ......
string类型操作
set key value
get key 获取键位key的值
getset key value 先获取key的值再把值设置为value
del key 删除值
incr key 将key的值增1 如果值不存在则默认设置为0再增1
如果非数字类型会失败并返回错误信息
decr key 自减
incrby key num 增num大小类似incr
decrby kye num 类似
append key num 将key的值增加num大小
hash类型操作
hset hashname key value 将key value对添加到hashname里
可以同时添加多个键值对
hset hashname key1 value1 key2 value2 ...
hget hashname key 取值
hmget hashname key1 key2 ...从名字为hashname的表中获取值
hgetall hashname 获取hash表中的所有值 以key1 value1 key2 value2 方式返回
hdel hashname key1 key2 删除
hdelall hashname 删除表中的所有数据
del hashname 删除hash表
hincrby hashname key num 增加数字num
hexists hashname key 判断hashname中的key的值是否存在 存在返回1,否则返回0
hlen hashname 获取hashname中的键值对数量,1对计数1
hkeys hashnaem 获取hashname中的所有key
list类型操作
lpush listname value1 value2 ...从左边添加值到list中,先添加value1,再添加value2
即添加完后value1在最右侧
rpush listname value1 value3 ...从右边添加值
lrange listname 0 2 从第0个元素一直列举到第2个元素,-1标示最后一个元素,-2标示倒数第二个元素
lpop listname 左边弹出
rpop listnaem 右边弹出
llen listname 获取list的长度
lpushx listname value 如果list存在则插入,否则不插入
lren listname num value 从左到右删除num个value,num为0时表示删除全部的值为value的元素
lset listname num value 将列表中的第num个元素的值设置为value,从0开始,-1表示最后的元素
linsert listname before value1 value2 在value1之前插入value2,after表示在value1之后插入
rpoplpush listname1 listname2 将listname1的最右元素弹出添加到listname2的最左边
set类型操作
sadd setname value1 value2 ...添加元素
srem setname value1 value2 ...删除元素
smenbers setname 查看set中的所有元素
sismenber setname value 查看set中是否存在value,存在返回1,否则返回0
sdiff setname1 setname2 求两个集合的差集
sinter setname1 setname2 求两个集合的交集
sunion setname1 setname2 求两个集合的并集
scard setname 获得集合中的value的数量
srandmenber setname 随机获取一个值
sdiffstore setname1 setname2 setname3 将setname2和setname3的差集放到setname1中
sinterstore setname1 setname2 setname3 类似sdiffstore
sunionstore setname1 setname2 setname3 类似sdiffstore
sorted-set(有序集合)类型操作
zadd ssetname num1 value1 num2 value2 ... 将value1、value2...添加到ssetname中
并且其中会存储num的信息
zscore ssetname value 将返回集合中value的num
zcard ssetname 获取集合中存储的元素数量
zrem ssetname value1 value2 ... 删除元素
zrange ssetname 0 -1 withscores 获取0位置到最后位置的元素,
由小到大顺序排序,并且显示分数
zrevrange ssetname 0 -1 withscores 由大到小排序
zremrangebyrank ssetname 0 4 删除由小到大顺序删除第0到第4个元素
zremrangebyscore ssetname num1 num2 删除num1到num2之间(闭区间)的所有元素
zrangebyscore ssetname num1 num2 列举num1到num2之间的所有元素
可以通过在最后添加withscores来同时列举出分数,在withscores后可以添加limit 0 2
来限制只显示其中的第0个元素到第2个元素
zscore ssetname value 查看value的分数
zcount ssetname num1 num2 统计出num1到num2的所有元素个数
对key的操作
keys * 列举出所有的key支持通配符
del key1 key2 删除key
exists key 检查key是否存在,存在则返回1,否则返回0
rename key newname 重命名
rxpire key 1000 设置key的剩余时间为1000单位为s
ttl key 查询剩余时间
type key 查询key的类型(string、hash、list、set、sorted-set)
redis中一个有16个数据库(0 - 15)
默认使用0号数据库
使用select 2 可切换到2号数据库
redis支持事务,事务隔离级别为串行化,事务中如果有一条命令执行失败,
其后的命令仍然能够被执行
multi 开启事务
exec 提交事务
discard 回滚事务
redis的持久化
rdb方式:配置间隔时间,每段时间持久化一个
优势:只包含一个文件,文件备份方便
性能最大化,由子进程进行持久化
劣势:会出现数据丢失
数据很大时,需要消耗很大性能持久化,会出现宕机的情况
aof方式:记录操作的日志文件,在每次开启redis时,再根据日志文件持久化
优势:每秒同步 可能会丢失一秒内的操作
每修改同步
不同步
劣势:文件较大,运行效率比rdb差
在redis.conf文件中配置 appendonly no 更改为 yes
在之后可以找到
# appendfsync always
# appendfsync everysec
# appendfsync no
把#号去掉则为选则的同步策略
无持久化:可以设置redis不持久化
可以选择rdb和aof结合
在redis.conf文件中配置
save 900 1 在900秒内有1次对数据库的修改则持久化一个
save 300 10 在300秒内有10次对数据库的修改则持久化一个
save 60 100000 在60秒内有10000次对数据库的修改则持久化一个
dump.rdb即是持久化文件
上一篇: 表弟刚结婚