Redis总结

本文详细介绍了Redis数据库的特性和各种操作命令,包括数据类型的使用、数据生命周期的管理、列表和集合的操作等,并探讨了RDB和AOF两种持久化方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nosql: not only sql,作为关系型数据库的补充
在这里插入图片描述
redis:开源高性能键值对key-value数据库
特征:1.数据间没有必然的关联关系 2.单线程 3.5种数据类型

在这里插入图片描述
redis数据存储格式:key始终是字符串,value是5种类型

在这里插入图片描述
set key value; get key
delete成功返回integer 1,否则 0
在这里插入图片描述
mset/mget 添加/获取多个数据
strlen key 获取字符个数
append key value 追加,返回的是字符的长度
在这里插入图片描述
使用append追加时,如果数据库中有,追加,没有就添加

在这里插入图片描述
单数据操作与多数据操作执行次数相同,发送和接收时间不同
多数据操作在数据量极大时会占用线程
在这里插入图片描述
incr:增
incrby key value :增加指定的值
incrbyfloat key value:小数
decr:减
decrby:减指定值
在这里插入图片描述
类型转换、原子性、范围(2^63-1)
在这里插入图片描述
设置数据的生命周期
setex key time value :单位s
psetex:单位ms
在这里插入图片描述
redis以string类型修改简单,自增
在这里插入图片描述
key的设置约定:set 表名:主键名:主键值:字段名 value
在这里插入图片描述
redis用string类型的话,字段名太多,查询复杂,用json(对象)修改麻烦
在这里插入图片描述
右边相当于一个键值对,或者整体看成两个redis
在这里插入图片描述
hset key field value
hget key field
hgetall key
hdel key field
在这里插入图片描述
多条数据:
hmset key field value field value
hmget key field1 field2…
hlen获取字段/field的数量
在这里插入图片描述
hkeys获取的是所有的字段名/field
hvals获取所有的字段值/value
hincrby key field increment:增加字段值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
lpush从左边插入,rpush从右边插入,lpush后用lrange查询是反的
插入多条数据:lpush key a b c
lrange的start和stop都是索引,表示从第几个开始,第几个结束
如果stop为负数,表示倒数第几个
在这里插入图片描述
lpop和rpop:pop完之后的元素不再存在于list中
在这里插入图片描述
在这里插入图片描述
blpop返回两个值:
list0: 从哪儿获取
d:取出的元素
在这里插入图片描述
lrem删除指定元素和个数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
limit 0 3 指从索引为0(第一个元素)开始,查询数目限制为3个
在这里插入图片描述
在求交集的时候只有三个sorted set的member相同的时候∩
在这里插入图片描述
aggregate max返回三个member中score最大的
在这里插入图片描述
zrank返回的是索引
在这里插入图片描述
在这里插入图片描述
ttl返回值有三种,实际的失效时间,-1(未设置),-2(已失效)
persist将时效性转换为永久性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
str3 rename为str的时候,str3的值也将str的值覆盖
renamenx如果将修改成的名字不存在,那么可以修改,否则修改失败返回0
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ping:测试服务器是否连接
在这里插入图片描述
在这里插入图片描述
dbsize:查看当前数据库中有多少个key
flushdb:清空当前数据库的数据
flushall:删除所有数据库数据
在这里插入图片描述
jedis:java与redis数据库连接的通道
创建maven工程,导入依赖
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

持久化

在这里插入图片描述

RDB存储方式

save指令: 用来保存当前的数据快照,保存形式为.rdb文件
在这里插入图片描述
bgsave指令:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
会对数据产生影响:比如set会,get不会
不进行数据比对:两次set前后数值不变,也是发生了变化
在这里插入图片描述
在这里插入图片描述

AOF存储方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
取消事务discard

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
主观下限:一台sentinel认为master挂了
客观下限:超过半数sentinel认为master挂了
在这里插入图片描述
sentinel投票机制,超过半数当选
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
翻身农奴把歌唱

### Redis 实训总结与经验分享 Redis 是一种高性能的内存数据库,广泛应用于缓存、消息队列、分布式锁等场景。以下是对 Redis 实训中关键点的总结和经验分享。 #### 1. Redis 的安全问题 在实际项目中,Redis 的安全性是一个不可忽视的问题。如果配置不当,可能会导致数据泄露、拒绝服务攻击或数据篡改等问题[^1]。因此,在使用 Redis 时需要特别注意以下几点: - **访问控制**:通过设置密码(`requirepass` 配置项)限制对 Redis 服务器的访问。 - **限流防护**:启用 Redis 的限流机制,防止恶意请求导致的服务中断。 - **数据加密**:对于敏感数据,可以采用数据加密技术确保其完整性。 #### 2. Redis 的性能优化 Redis 的高性能主要得益于其基于内存的操作模式以及简单的键值存储结构。在实际应用中,可以通过以下方式进一步提升 Redis 的性能[^2]: - **缓存策略**:将热点数据存储到 Redis 中,减少对后端数据库(如 MySQL)的直接访问压力。例如,让 80% 以上的查询走缓存,20% 以下的查询走数据库。 - **持久化配置**:根据业务需求选择合适的持久化方式(RDB 或 AOF)。RDB 提供快照式持久化,适合数据恢复;AOF 提供更高的数据安全性,但可能会影响性能。 - **分片与集群**:当单机 Redis 的容量或性能无法满足需求时,可以考虑使用 Redis 分片或 Redis 集群来扩展存储能力和并发处理能力。 #### 3. Redis 的备份与恢复 为了确保数据的安全性和可靠性,定期进行 Redis 数据备份是非常重要的[^1]。以下是备份与恢复的最佳实践: - **自动备份**:通过配置定时任务(如 `cron`)定期生成 RDB 文件。 - **增量备份**:结合 AOF 日志实现增量备份,减少全量备份带来的性能开销。 - **灾难恢复**:在主从架构中,确保从节点的数据同步正常,以便在主节点故障时快速切换。 #### 4. 权限管理与可视化范围 在某些项目中,Redis 的数据可能需要根据不同角色的权限进行访问控制。例如,在一个微信小程序开发项目中,不同用户角色可以查看不同的数据范围[^3]。类似地,可以在 Redis 中实现类似的权限管理逻辑: - **命名空间隔离**:为不同角色的数据设置独立的命名空间前缀,避免数据冲突。 - **ACL 控制**:Redis 6.0 及以上版本支持 ACL(Access Control List),可以为不同用户分配特定的命令权限和键空间访问权限。 #### 5. Maven 项目中的 Redis 集成 在基于 Maven 的 Spring Boot 项目中集成 Redis 时,可以通过以下步骤完成配置[^4]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 同时,需要在 `application.yml` 或 `application.properties` 文件中配置 Redis 连接信息: ```yaml spring: redis: host: localhost port: 6379 password: your_password timeout: 5000ms lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 ``` #### 6. 常见问题与解决方法 在 Redis 实训过程中,可能会遇到以下常见问题: - **内存不足**:可以通过调整 `maxmemory` 和 `maxmemory-policy` 参数来解决。 - **网络延迟**:检查 Redis 服务器与客户端之间的网络连接是否正常。 - **数据丢失**:确保持久化配置正确,并定期测试数据恢复流程。 --- ### 示例代码:Redis 缓存操作 以下是一个简单的 Redis 缓存操作示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; @Service public class CacheService { @Autowired private StringRedisTemplate redisTemplate; public void setCache(String key, String value) { redisTemplate.opsForValue().set(key, value); } public String getCache(String key) { return redisTemplate.opsForValue().get(key); } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值