首页 > 数据库 >Redis的其他操作、celery

Redis的其他操作、celery

时间:2023-11-21 09:45:51浏览次数:30  
标签:缓存 name Redis redis celery key 操作 conn

Redis的其他操作

'''
delete(*names)
exists(name)
keys(pattern='*')
expire(name ,time)
rename(src, dst)
move(name, db))
randomkey()
type(name)
'''
redis的key值,最大可以是多少? 
	# 最大不超过512M  一般 1KB
redis的value值,最大可以是多少? 
	# 最大不超过512M
# delete(*names) 删除我创建的key
conn.delete("girls")
# exists(name) key存在返回1不存在返回0
print(conn.exists("girls"))
# keys(pattern='*') 返回所有的key值
print(conn.keys())
# expire(name ,time) 5秒后删除该key
conn.expire("name", 5)
# rename(src, dst)修改名字
# move(name, db))将该key移动到另一个
conn.move("age", 1)
# randomkey() 随机获取一个key
print(conn.randomkey())
# type(name) 查看类型

Redis管道

# 事务的四大特性
    -原子性:要么都成功,要么都失败
    -一致性:数据前后要一致
    -隔离性:多个事务之间相互不影响
    -持久性:事务一旦完成,数据永久改变
 
# 关系型数据库,支持事务  
    
# redis 有没有事务?没有专门的事物,但是通过别的方式,可以实现事务的几个特性,所以咱们认为它具备事务
	-redis要支持事务,要完成事务的几大特性,需要使用管道来支持
    -单实例redis是支持管道的
    -集群模式下,不支持管道,就不支持事务
  
# Redis通过管道实现事务

    import redis

    conn = redis.Redis()
    # 没有使用事务
    conn.decrby("my_money", 10)

    l = [1, 2, 3]
    print(l[4])

    conn.incrby("zh_money", 10)
    """
        没有管道的情况,一旦失败,之前执行的 不会回退
    """


    # 通过管道实现事务
    pipeline = conn.pipeline(transaction=True)
    # 创建了一个管道,把命令都一个个放到管道中,先不执行,当执行execute,才执行管道中所有的命令
    pipeline.decrby("my_money", 10)
    l = [1, 2, 3, 4]
    print(l[0])

    pipeline.incrby("zh_money", 10)

    pipeline.execute()

    conn.close()

Django中使用Redis

通用方案

# 在utils中写一个池
import redis

POOL = redis.ConnectionPool(max_connections=20)
# 在要使用的地方,导入使用即可
	from utils.common_redis_pool import POLL


    def redis_dome(request):
        conn = redis.Redis(connection_pool=POLL, decode_responses=True)
        res = conn.incrby("count")
        return HttpResponse(f"你是我们的第{res}个用户")

第三方模块

pip install django-redis

# 配置文件配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
            # "PASSWORD": "123",
        }
    },
}
# 在使用的位置导入使用
from django_redis import get_redis_connection


def redis_demo(request):
    conn = get_redis_connection()
    res = conn.incrby("")
    print(res)

    return HttpResponse(f'您是我们第:{res}个用户')

Django的缓存

redis数据存在内存中,放、取的速度都非常快,非常适合作缓存使用
	本来数据在mysql中,每次都查询,速度慢,把查询出来的数据,暂时存储到redis(缓存),下次请求再来,直接从redis中拿,速度就会很快
    
# Django中使用缓存
	配置文件配置(缓存位置:内存、文件中、Redis中)
            CACHES = {
            "default": {
                "BACKEND": "django_redis.cache.RedisCache",
                "LOCATION": "redis://127.0.0.1:6379",
                "OPTIONS": {
                    "CLIENT_CLASS": "django_redis.client.DefaultClient",
                    "CONNECTION_POOL_KWARGS": {"max_connections": 100}
                    # "PASSWORD": "123",
                }

    把数据放到缓存中(放到redis中)
    from django.core.cache import cache
    # 存
    cache.set(key,value可以是任意类型,过期时间)
        redis原本只支持5大数据类型,但是经过封装后可以放python的任意类型
        本质:pickle序列化--->bytes格式--->以redis字符串的形式放在了redis中
    # 取
    cache.get(key)
                
                
# 前后端分离中,使用 cache.set   cache.get   
# 前后端混合中
     可以整站缓存 
     可以要缓存一个页面
     可以缓存页面中的某个位置
# 可以缓存的位置:
     内存中
     本地文件中
     数据库中
     reids中 (咱们用的多)

标签:缓存,name,Redis,redis,celery,key,操作,conn
From: https://www.cnblogs.com/chao0308/p/17845557.html

相关文章

  • redis介绍使用、数据类型的使用方法
    redis介绍与安装#1redis什么 -数据库就是个存数据的地方:只是不同数据库数据组织,存放形式不一样 -mysql关系型数据库(oracle,sqlserver,postgrasql)-非关系型数据(nosql):redis,mongodb,clickhouse,infludb,elasticsearch,hadoop。。。 -没有sql:没有sql语句-not......
  • celery 的高级使用
    celery包结构celery_task#celery包celery.py#celery连接和配置相关文件,且名字必须叫celery.pyhome_tasks.py#homeapp的异步任务user_task.py#userapp的异步任务get_result.py#查看异步任务add_task.py#启动异步任务__init__.py#包......
  • celery介绍
    celery介绍#celery是什么?分布式异步任务框架:第三方框架,celery翻译过来是芹菜,吉祥物就是芹菜项目中使用异步任务的场景,可以使用它之前做异步,如何做?异步发送短信--->开启多线程--->不便于管理#celery有什么作用? -执行异步任务-执行延迟任务-执行定......
  • go使用context.withtimtout取消一个超时操作
    3 使用context.WithTimeout:package mainimport ("context""fmt""time")func main() {timeout := 5 * time.Secondctx, cancel := context.WithTimeout(context.Background(), timeout)defer cancel()done := make(chan bool)go func() {    // ......
  • Linux操作系统 I/O重定向读书笔记
    1.理解I/O重定向的基本概念1.1输入重定向在Linux系统中,输入重定向是指将命令的输入从键盘改变为来自文件或其他命令的输出。使用<符号可以实现输入重定向,例如:$command<input.txt这将使command命令从input.txt文件中读取输入而不是从键盘。1.2输出重定向输出重定......
  • 【Redis使用】一年多来redis使用笔记md文档,第(2)篇:命令和数据库操作
    Redis是一个高性能的key-value数据库。本文会让你知道:什么是nosql、Redis的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中list保存的数据类型、使用StrictRedis对象对string类型数据......
  • redis
    redis单机安装安装并配置redis服务[root@localhost~]#ll-rw-r--r--1rootroot196633710月1010:09redis-5.0.4.tar.gz[root@localhost~]#tarxfredis-5.0.4.tar.gz[root@localhost~]#cdredis-5.0.4/[[email protected]]#make[root@localhostred......
  • Netty-操作篇
    服务端创建步骤步骤一:创建ServerBootstrap实例。步骤二:设置并绑定Reactor线程池。步骤三:设置并绑定服务端Channel。步骤四:链路建立的时候创建并初始化ChannelPipeline(非必须)。用于处理网络事件:1.链路注册、激活、断开、发生异常2.接收到请求消息3.请求消息接收并处理完毕......
  • C#文件操作
    使用FIle的静态方法进行文件操作1//使用file的静态方法进行复制2File.Copy(path,destpath);3//使用File的静态方法删除路径下的一个文件4File.Delete(path);5//使用File的静态方法移动路径下的一个文件6File.Move(path,destpath);7File.ReadAllText(path);//打......
  • Linux操作系统的优势官方开发App应用程序有哪些优缺点?
    随着技术的不断进步,Linux操作系统在应用程序开发中扮演着越来越重要的角色。其开放性、稳定性和定制性成为开发者的首选。图片来源:http://news.gulufenfa.com/post/211Linux系统简介Linux作为一个广泛使用的开源操作系统,它的核心是Linux内核,由LinusTorvalds在1991年首次发布。Linu......