博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis
阅读量:6115 次
发布时间:2019-06-21

本文共 2863 字,大约阅读时间需要 9 分钟。

windows下安装

操作:

 

作用:用于操作内存的软件

   使用连接池,本质是维护一个已经和服务端连接成功的socket,以后在此发送数据时,直接获取一个socket,直接send数据

特点:1、可以做持久化(AOF / RDB)

   单进程,单线程

   相当于是大字典

      五大数据类型:大字典的值可以是字符串、列表、集合、字典、元祖{(‘yin’,60),},第二个值是分数,可以排序,是个有序集合。

   不支持多层嵌套。可以通过json转换。

 

 

应用:

  1、自定义redis

import redispool = redis.ConnectionPool(host='127.0.0.1',port=6379,password='xxx',max_connetction=100)conn = redis.Redis(connection_pool=pool)

 

  2、第三方组件django-redis,自动创建连接池

    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": "密码", } }}
from django_redis import get_redis_connectionconn = get_redis_connection("default")

 缓存:

1、全站缓存:在中间件开头和最后分别加一个中间件

使用中间件,经过一系列的认证等操作,如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,当返回给用户之前,判断缓存中是否已经存在,如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存    MIDDLEWARE = [        'django.middleware.cache.UpdateCacheMiddleware',        # 其他中间件...        'django.middleware.cache.FetchFromCacheMiddleware',    ]    CACHE_MIDDLEWARE_ALIAS = ""    CACHE_MIDDLEWARE_SECONDS = ""    CACHE_MIDDLEWARE_KEY_PREFIX = ""
View Code

2、单视图缓存:

from django.views.decorators.cache import cache_page@cache_page(60 * 15)def my_view(request):      ...
View Code

3、局部缓存

a. 引入TemplateTag        {% load cache %}    b. 使用缓存        {% cache 5000 缓存key %}            缓存内容        {% endcache %}
View Code

 

 

操作:

  事务:将多次请求打包一次发送。

pipe = conn.pipeline(transation=True)pipe.multi()pipe.set(xxx)pipe.hset(xxx)pipe.lpush(xxx)pipe.execute()

 

全局操作:

  conn.keys() 取到所有的key,并且可以通过*做模糊匹配。参数可以(*list)传一个字典,批量删除。

  conn.delete("key") 删除一个键

  conn.flushall() 清空所有  

  conn.exists("key") 判断是否存在

 

  一、hash操作(字典)

    hset(name,key,value)

    hget(name,key)

    hgetall(name)  

    hmset(name,{key:value,key:value})

    hmget(name,"k1","k2") 或者 hmget(name,["k1","k2"])

 

    hlen(name)

    hkeys(name)

    hvals(name)    

 

    hincrby(name,key,amount=1)增加1

 

    scan_iter()

   

  二、列表

    lpush(name,value)  依次向左边加值

    rpush(name,value) 依次向右边加值

    lpop(name) 取走最左边的值

    rpop(name) 取走最右边的值

    blpop(name,timeout=xx) 同pop,但是取不到数据会等待。

    lrange(name,start,stop)  取范围内的值

    列表中没有封装一点一点取数据的方法,可以自己定义:

import redispool = redis.ConnectionPool(host='127.0.0.1',port=6379,password="ywj971020")conn = redis.Redis(connection_pool=pool)conn.lpush('k1',*[123,22,123,5899,435,12,3,879,345,1,23,5346,7,8,89,89,567,456])def get_iter(key,count=2):    index = 0    while True:        data_list = conn.lrange(key,index,index+count-1)        if not data_list:            return        index += count        for item in data_list:            yield itemfor item in get_iter("k1"):    print(item)
View Code

 

    

转载于:https://www.cnblogs.com/yinwenjie/p/10680165.html

你可能感兴趣的文章
POJ3694 Network
查看>>
微信小程序开发-框架
查看>>
redo、undo、binlog的区别
查看>>
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>