基础:redis

key 的统一操作

	# 删除指定key
	del key
	
	# 获取key是否存在
	exists key
	
	# 获取key的类型
	type key
	
	# 排序
	sort
	
	# 改名
	rename key newkey
	renamenx key newkey
	
	# 为指定key设置有效期
	expire key seconds
	pexpire key milliseconds
	expireat key timestamp
	pexpireat key milliseconds-timestamp
	
	# 获取key的有效时间
	ttl key
	pttl key
	
	# 切换key从时效性转换为永久性
	persist key
	
	# 查询key
	keys pattern
		keys *  keys    # 查询所有
		jo*  keys       # 查询所有以jo开头
		*jo          	# 查询所有以jo结尾
		keys ??jojo     # 查询所有前面两个字符任意,后面以jojo结尾 
		keys user:?     # 查询所有以user:开头,最后一个字符任意
		keys u[st]er:1  # 查询所有以u开头,以er:1结尾,中间包含一个字母,s或t
		

String 类型

	# 添加/修改数据添加/修改数据
	set key value
	
	# 获取数据
	get key
	
	# 删除数据
	del key
	
	# 判定性添加数据
	setnx key value
	
	# 添加/修改多个数据
	mset key1 value1 key2 value2 …
	
	# 获取多个数据
	mget key1 key2 …
	
	# 获取数据字符个数(字符串长度)
	strlen key
	
	# 追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
	append key value
	
	# 设置数值数据增加指定范围的值
	incr key
	incrby key increment
	incrbyfloat key increment
	
	# 设置数值数据减少指定范围的值
	decr key
	decrby key increment
	
	# 数据具有指定的生命周期
	setex key seconds value
	psetex key milliseconds value

hash 类型

	# 添加/修改数据
	hset key field value
	
	# 获取数据
	hget key field
	hgetall key
	
	# 删除数据
	hdel key field1 [field2]
	
	# 设置field的值,如果该field"存在"则不做任何操作
	hsetnx key field value
	
	# 添加/修改多个数据
	hmset key field1 value1 field2 value2 …
	
	# 获取多个数据
	hmget key field1 field2 …
	
	# 获取哈希表中字段的数量
	hlen key
	
	# 获取哈希表中是否存在指定的字段
	hexists key field
	
	# 获取哈希表中所有的字段名或字段值
	hkeys key
	hvals key
	
	# 设置指定字段的数值数据增加指定范围的值
	hincrby key field increment
	incrbyfloat key field increment
	

list 类型

	# 添加/修改数据	左left	右:right
	lpush key value1 [value2] ……
	rpush key value1 [value2] ……
	
	# 获取数据
	lrange key start stop
	lindex key index
	llen key
	
	# 获取并移除数据
	lpop key
	rpop key
	
	# 移除指定数据
	lrem key count value
	
	# 规定时间内获取并移除数据
	blpop key1 [key2] timeout
	brpop key1 [key2] timeout
	brpoplpush source destination timeout
	

set 类型

	# 添加数据
	sadd key member1 [member2]
	
	# 获取全部数据
	smembers key
	
	# 删除数据
	srem key member1 [member2]
	
	# 获取集合数据总量
	scard key
	
	# 判断集合中是否包含指定数据
	sismember key member
	
	# 随机获取集合中指定数量的数据
	srandmember key [count]
	
	# 随机获取集中的某个数据并将该数据移除集合
	spop key [count]
	

求两个集合的交、并、差集

	# 交
	sinter key1 [key2 …]  
	
	# 并
	sunion key1 [key2 …]  
	
	# 差
	sdiff key1 [key2 …]
	
	# 求两个集合的交、并、差集并存储到指定集合中
	sinterstore destinationKey key1 [key2 …]  
	sunionstore destinationKey key1 [key2 …]  
	sdiffstore  destinationKey key1 [key2 …]
	
	# 将指定数据从原始集合中移动到目标集合中
	smove sourceKey destinationKey member
	

​ 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化 ,用于防止数据的意外丢失,确保数据安全性

RDB(数据快照),将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据

save

# 手动执行一次保存操作
save

# redis是个单线程的工作模式,它会创建一个任务队列,所有的命令都会进到这个队列里边,在这儿排队执行,执行完一个消失一个,当所有的命令都执行才可以,数据量大会阻塞,线上环境不建议

# 配置redis.conf文件
bind 192.168.241.100
port 6379
daemonize no
logfile "6379.log"
dir /redis/data
dbfilename "dump-6379.rdb"

bgsave

# 手动启动后台保存操作,但不是立即执行
bgsave


工作原理

在这里插入图片描述

执行bgsave的过程中立即返回后台正在保存的消息,子进程完成保存后,会再次返回一个完成保存的消息

优点

  • RDB是一个紧凑压缩的二进制文件,存储效率较高

缺点

  • RDB方式无论是执行指令还是利用配置,无法做到实时持久化具有较大的可能性丢失数据

AOF(过程日志)将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程

AOF写数据三种策略

  • always(每次):每次写入操作均同步到AOF文件中数据零误差,性能较低,不建议使用

  • everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,在系统突然宕机的情况下丢失1秒内的数据 数据准确性较高,性能较高,建议使用,也是默认配置

  • no(系统控制):由操作系统控制每次同步到AOF文件的周期,整体过程不可控

配置 redis.conf 文件

bind 192.168.241.100
port 6379
daemonize no
logfile "6379.log"
dir /redis/data
dbfilename "dump-6379.rdb"
# 10s之内有2个key发生改变,就会保存
save 10 2
# 开启AOF持久化功能,默认no,即不开启状态
appendonly yes
# AOF持久化文件名,默认文件名为appendonly.aof,建议配置为appendonly-端口号.aof
appendfilename "appendonly-6379.aof"
# AOF写数据策略,默认为everysec
appendfsync everysec

AOF重写

对同一个数据的若干个条命令执行结果 转化成 最终结果数据对应的指令进行记录

手动重写工作原理

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值