Redis缓存

Redis作为内存数据库,常用于高频访问数据,提供快速响应。文章介绍了Redis与MySQL的数据存储方式差异,以及如何使用Python建立Redis连接池,执行操作如设置、获取键值。同时,展示了Django中配置Redis作为缓存和session存储的方法。

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

Redis数据库

redis是非关系型数据库,大多是以键值对的存放数据,数据是存放在内存中。

MySQL是关系型数据库 , 是以表的方式存放数据 , 数据是直接存放到磁盘中也就是硬盘里面。
但一个用户需要重复多次获取同段数据 , 每次都从数据库磁盘中读取数据 , 那么速度就会比较慢。把常用频繁访问的数据放到内存中 , 用户访问的速度会加快 , 服务器在获取数据的时候也不需要经过数据库。
从性能上:用户第一次访问数据 ,这个数据会存放带内存 , 下一次就不需要进入数据库访问
安装后配置环境变量,在cmd进入redis服务
redis-cli

使用python链接redis

pip install redis
import redis
# 创建redis的链接池
# decode_responses 得到的结果是一个字节类型的 , 默认是False
pool = redis.ConnectionPool(decode_responses=True , max_connections=10)
# 从redis链接池中获取一个链接进行使用
conn = redis.Redis(connection_pool=pool)

conn.set('name','ac')
print(conn.get('name'))
conn.set('gender','男' , 20)
print(conn.get('gender'))

conn.lpush('ls' , 2,3,4,5,6)
print(conn.lrange('ls' , 0,-1))

Django链接redis

pip install django_redis

django中需要到settings.py文件中配置链接redis的信息

CACHES = {
    "default": { # 默认
        # 指定引擎
        "BACKEND": "django_redis.cache.RedisCache",
        # IP和端口  那个库
        # redis://IP:端口/0
        "LOCATION": "redis://127.0.0.1:6379/0",
        # 其余的配置项
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            # 如果你的redis 有密码则加上密码
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
# 配置告诉django 以后session不存数据库了 而是存在我指定的redis的哪个库中去

# 修改session存储机制  使用Redis来进行存储
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# 告诉Django  到底使用哪个Redis的哪个库来存储
SESSION_CACHE_ALIAS = 'session'
import os
if __name__ == '__main__':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day12.settings')
    import django
    django.setup()

    from django_redis import get_redis_connection

    conn = get_redis_connection()

    conn.set('age',26)
    print(conn.get('age'))
    # 将字节数据转换为十进制数据
    print(conn.get('name').decode())
### 关于 Redis 缓存的使用教程和最佳实践 #### Spring Boot 整合 Redis 缓存的最佳实践 在现代应用开发中,缓存是提升系统性能和响应速度的关键技术之一。Redis 作为一种高性能的内存数据库和缓存服务器,在分布式系统特别是微服务架构中有广泛应用,可以显著减少数据库访问压力并提高系统的并发能力和稳定性[^1]。 为了有效利用 Redis 作为应用程序中的缓存解决方案,建议遵循以下几点: - **合理设置过期时间**:通过 `@Cacheable` 注解或其他方式设定合理的 TTL (Time To Live),防止数据长期占用内存资源。 - **选择合适的序列化机制**:默认情况下,Spring Data Redis 使用 JDK 序列化器来处理对象存储。然而,JDK 序列化的效率较低且生成的数据较大。推荐采用 JSON 或者 Protobuf 等更高效的序列化工具。 - **异常情况下的回退策略**:考虑到网络波动或者 Redis 集群不可用的情况,应该有相应的容错措施。例如,在尝试获取缓存失败时直接调用目标方法,并将结果重新放入缓存中[^3]。 ```java // Java代码示例:定义带有 @Cacheable 的业务逻辑类 import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @Service public class MyService { @Cacheable(value = "items", key = "#id") public Item getItemById(Long id) { // 如果缓存命中,则返回缓存的结果; // 否则查询数据库并将结果加入缓存后再返回给客户端 return repository.findById(id).orElseThrow(() -> new EntityNotFoundException()); } } ``` #### 将 Redis 缓存集成到 Apache Shiro 中 Apache Shiro 是一个强大的安全框架,支持认证、授权等功能。要将其与 Redis 结合起来用于会话管理和权限控制等方面,可以通过自定义 CacheManager 来完成这一过程[^2]。 具体做法是在项目初始化阶段创建一个新的 `RedisCacheManager` 实例并与之关联,从而使得所有的缓存操作都基于 Redis 完成。这不仅提高了安全性管理模块本身的运行效率,也便于跨多个节点共享同一套用户状态信息。 ```java // Java代码片段:配置Shiro以使用Redis作为其内部缓存组件 import org.apache.shiro.cache.CacheManager; import org.crazycake.shiro.RedisCacheManager; @Bean public CacheManager shiroCacheManager() { CacheManager cacheManager = new RedisCacheManager(redisManager); return cacheManager; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值