Django分别使用Memcached和Redis作为缓存的配置(Linux环境)

1 使用memcached

1.1 安装memcached

安装(Linux)

sudo apt install memcached

启动

#方式一:
service memcached start
# 方式二:
/usr/bin/memcached -u memcache -m 1024 -p 11222 -l 0.0.0.0 -d start
  • -d:这个参数是让memcached在后台运行
  • -m:指定占用多少内存。以M为单位,默认为64M。
  • -p:指定占用的端口。默认端口是11211。
  • -l:别的机器可以通过哪个ip地址连接到我这台服务器,如果想要让别的机器连接,就必须设置-l 0.0.0.0

检测启动成功

ps aux|grep memcached
# memcache 11025  0.0  0.1 326560  2372 ?  Ssl  Aug28   0:01 memcached -u memcache -m 512 -p 11211 -l 0.0.0.0 -d

1.2 Django连接memcached

1.2.1在‘setting.py‘文件中添加缓存的配置

# 缓存
CACHES = {
    ‘default‘: {
        ‘BACKEND‘: ‘django.core.cache.backends.memcached.MemcachedCache‘,
        ‘LOCATION‘: [
            ‘172.19.26.240:11211‘,
            ‘172.19.26.242:11211‘,
        ]
    }
}

注意:添加的键的命名方式如下

def default_key_func(key, key_prefix, version):
    return ‘%s:%s:%s‘ % (key_prefix, version, key)

如要修改,可在setting.py文件中添加配置‘KEY_FUNCTION‘

CACHES = {
    ‘default‘: {
        ‘BACKEND‘: ‘django.core.cache.backends.memcached.MemcachedCache‘,
        ‘LOCATION‘:  ‘172.19.26.240:11211‘,
        ‘KEY_FUNCTION‘: lambda: key_prefix,version,key : ‘Django‘+key,
    }
}

1.2.2 配置好之后在views中操作cache:

from django.core.cache import cache

def index(request):
    cache.set(‘username‘,‘django‘,60)
    print(cache.get(‘username‘))
    return HttpResponse(‘index‘)

2 使用redis

2.1 安装redis

安装(Linux)

  • 将下载的压缩文件解压
tar zxvf redis-4.0.8.tar.gz
  • 复制:推荐放在"/usr/local/"下
mv -r redis-4.0.8/* /usr/local/redis
  • 生成和安装
cd /usr/local/redis
make
make install

启动和配置

  1. 默认方式启动
redis-server 

2. 运行启动

redis-server --port 6380  # 指定运行的端口号
  1. 配置文件方式启动
redis-server /etc/redis/redis.conf

客户端连接redis

  1. 交互式方式
redis-cli -h {host} -p {port}  # 会进入交互式环境
  1. 命令方式
redis-cli -h {host} -p {port} {command}  # 直接执行一个命令,不进入交互式环境

停止redis服务

# 客户端关闭redis服务器,默认save即关闭时生成持久文件
redis-cli shutdown nosave|save

2.2 Django配置redis缓存

开发机上安装django-redis

pip install django-redis

配置文件‘setting.py‘

# 创建键时命名方式
def KEY_FUNCTION(key, key_prefix, version):
    return "django:" + key

# redis缓存
CACHES = {
    ‘default‘: {
        ‘BACKEND‘: ‘django_redis.cache.RedisCache‘,
        # url格式 redis://[:password]@host:port/0
        # 可以在url指定redis的密码,0表示低0个数据库
        ‘LOCATION‘: ‘redis://127.0.0.1:6379/1‘,
        ‘OPTIONS‘: {
            "CLIENT_CLASS": ‘django_redis.client.DefaultClient‘,
            ‘PASSWORD‘: ‘123456‘,
        },
        # 自定义键名命名规则
        ‘KEY_FUNCTION‘: KEY_FUNCTION,
    }
}

对view缓存

# 通过装饰器对views进行缓存
@cache_page(60 * 2)  # 过期时间为秒
def cache(request):
    return HttpResponse(‘cache‘)

对全站进行缓存,需在setting中设置

MIDDLEWARE = [
    ‘django.middleware.cache.UpdateCacheMiddleware‘,
    ‘django.middleware.common.CommonMiddleware‘,
    ‘django.middleware.cache.FetchFromCacheMiddleware‘,
]

对模板片段进行缓存

{% load cache %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
{% cache 120 username %}
    hello, Django
{% endcache %}
</body>
</html>

底层的缓存API

>>>from django.core.cache import cache
>>>cache.set(‘username‘, ‘django‘, 120)
>>>True
>>>cache.get(‘username‘)
>>>‘django‘
>>>cache.ttl(‘username‘)
>>>101
>>>cache.set_many({‘a‘: 1, ‘b‘: 2, ‘c‘: 3})
>>>cache.get_many([‘a‘, ‘b‘, ‘c‘])
>>>OrderedDict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)])

redis服务器:

127.0.0.1:6379[1]> keys *
1) "django:b"
2) "django:c"
3) "django:a"
127.0.0.1:6379[1]>

原文地址:https://www.cnblogs.com/Alier/p/9557444.html

时间: 2024-11-03 12:54:35

Django分别使用Memcached和Redis作为缓存的配置(Linux环境)的相关文章

java集成memcached、redis防止缓存穿透

下载相关jar,安装Memcached,安装教程:http://www.runoob.com/memcached/memcached-install.html spring配置memcached <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"        factory-method="getInstance" init-method="initia

Redis的详细安装及Linux环境变量配置和启动

前言:  Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 我使用的是下面这个版本: 若没有资源的话,我在网盘分享了这个,没有密码,可直接网盘下载.https://pan.baidu.com/s/1pYf6xPE9wv4RufrG5JFRGg  一.接下来打开你的Linux..然后输入下面命令. yum install gcc tcl –y 安装依赖和一些组件 二..解压redis-使用tar命

Django使用Redis进行缓存详细最全流程

背景和意义服务器数据非经常更新.若每次都从硬盘读取一次,浪费服务器资源.拖慢响应速度.而且数据更新频率较高,服务器负担比较大.若保存到数据库,还需要额外建立一张对应的表存储数据.在Django中建立表通常做法是建立一个模型.看似简单,问题调试麻烦.开发时长久.为了进行服务器的加速,使用Redis进行缓存. 配置步骤如下1,服务器端安装redis(1)在Windows安装redis,方便测试 Redis不支持Windows!在它官网写得很清楚.但是开发环境一般是Windows系统.为了方便开发和调

024 引入Redis作为缓存

一 .概述 在本节之中,我们引入Redis作为缓存的实现. 二 .环境的搭建 首先我们引入redis的场景启动器. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 然后我们查看自动配置类: @Configuration @Condi

redis集群部署配置

Redis集群部署配置 测试环境:服务器系统为centos6.5,redis版本为3.2.2,使用一台机器,模拟6个redis实例来创建redis集群,其中3主3从 分别建立redis的安装目录,并复制redis.conf到安装目录下. 2.修改每个目录下的redis.conf配置文件 port 7000   #端口 daemonize yes cluster-enabled yes   #开启集群模式 cluster-config-file nodes-7000.conf  #集群配置文件 c

第三方缓存软件memcached和redis异同

memcached和redis相同点:都是以键值对的形式来存储数据,通俗讲就是一个大的hashtable缓存数据都是存在内容中 key-value 不同点:memcached:1.一个key所对应的值必须要通过客户端序列化成二进制流存储 byte[](缺点,由于序列化反序列化消耗CPU比较大)2.一个key所对应的值最大只能是1m3.传统的memcached是不支持内存数据的持久化操作,当服务器重启,数据会丢失4.可以配置读写分离5.多线程 redis: 1.一个key对应的值可以是 strin

缓存技术PK:选择Memcached还是Redis?

缓存技术PK:选择Memcached还是Redis? memcached完全剖析----------------->高质量文章

缓存选型-Ehcache、memcached、Redis

缘由 今天发现有个项目访问很慢,其中一个原因就是读取oracle时慢,数据量不大,配置表忽略,业务表也就38万条记录.一个解决方案是使用缓存. 那么问题来了,用哪个缓存框架好? Ehcache 项目一直用它,不过版本可能有点低.确实很方便,就一个jar包搞过来就行.java的首选. Memcached 用c写的,比较麻烦,要安装.与java集成的资料感觉不是很多. Redis 也是要安装,虽然我装过不太麻烦,但比起Ehcache还是有点麻烦. 我的选择 看完了下面参考资料的第一篇文章,我就决定还

django自带cache结合redis创建永久缓存

0916自我总结 django自带cache结合redis创建永久缓存 1.redis库 1.安装redis与可视化操作工具 1.安装redis https://www.runoob.com/redis/redis-install.html 2.可视化操作工具 2.在服务中管理redis服务器的开启关闭 3.命令行简单使用redis -- redis-cli # 启动客户端 -- set key value # 设置值 -- get key # 取出值 4.redis支持 字符串:String