zoukankan      html  css  js  c++  java
  • redis的字符串操作以及在django中的使用

    redis

    ----redis、MongoDB : 非关系型数据库

    redis   存储在内存中

    MongoDB 存储在硬盘中

    简介

    redis是一个key-value存储系统 , 支持持久化 。

    ----补充 :比较redis 和 memcached

    ----redis 支持5大数据类型

    ----redis 支持持久化

    ----redis 单线程 , 单进程 , 速度依旧很快(瞬时并发量10w)

    ----memcached 不能持久化 , 只支持字符串 , 多线程多进程

    作用

    ----做缓存

    ---- session数据

    ---- 游戏排行榜

    ---- 对速度要求比较高的数据的存储

    ---- 消息队列

    五大数据类型 ★★★★★

    redis = {

    k1:'123',

    k2: [1,2,3,4],

    k3: {1,2,3,4},

    k4: (1,2,3,),

    k5: {('lqz',123), ('xxx',234)}

    }

    字符串

    列表

    字典

    集合

    有序集合

    redis的使用

    set(name, value, ex=None, px=None, nx=False, xx=False)

    在Redis中设置值,默认,不存在则创建,存在则修改 
    参数:
          ex,过期时间(秒)
          px,过期时间(毫秒)
          nx,如果设置为True,则只有name不存在时,当前set操作才执行,值存在,就修改不了,执行没效果
          xx,如果设置为True,则只有name存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值

    get(self, name)

    取出name对应的value

    mset(self, mapping)

    批量添加值 参数: 映射类型(如 字典)

    mget(self, keys, *args)

    批量获取值 参数: 想要获取的keys,返回值为列表 mget(['name', 'age', 'mykey1']) or mget('name', 'age', 'mykey1')

    inrc(self, name, account=1)

    自增, 传入需要自增的key(name), 默认每次自增1, 可以自己设定 通常被用来做访问量计数

    decr(self, name, account=1)

    自增, 传入需要自增的key(name), 默认每次自减1, 可以自己设定

    append(self, name, value)

    在对应的值后面追加内容 , 返回值为value的长度 如   'xx' -->  'xx11'

    其他方法及使用

    方法

    用途

    setnx(name, value)

    设置值, 只有name不存在时, 执行设置操作(添加),如果存在, 不会修改

    setex(name, value, time)

    设置值, time过期时间(数字秒或timedalta对象)

    psetx(name, time_ms, value)

    设置值, time过期时间(数字毫秒或timedalta对象)

    getset(name, value)

    设置新值并返回原来的值

    strlen(name)

    返回name对应的字节长度(汉字3字节)

     

    import redis  
    
    # 建立连接   Redis类中有许多属性,以下简单用了几个,详细了解可以看源码 
    connect = redis.Redis(port='127.0.0.1', host=6379, password='123456')  
    
    # res = conn.set('name', 'jason', ex=5) 
    # res = conn.get('name') 
    # res = conn.mset({'name': 'jason', 'age': 24}) 
    # res = conn.mget(['name', 'age', 'mykey1']) 
    # res = conn.incr('age') 
    # res = conn.decr('age') 
    # res = conn.append('name', 'nb') 
    print(res)

    在Django中使用redis


    在所需的app中新建连接池py文件

    # redis_pool.py 
    
    import redis  
    
    # 配置redis数据库的相关信息(host,port,password,max_connections(默认2**31)) 
    
    POOL = redis.ConnectionPool(host='127.0.0.1', port=6379, password=123456,max_connections=100)

    在试图类中进行操作

    from app01.redis_pool import POOL  
    def settest(request):
         conn = redis.Redis(connection_pool=POOL)
         conn.set('token', 'abcdefg')
         return HttpResponse('写入成功')      
    
    def gettest(request):
         conn = redis.Redis(connection_pool=POOL)             
         token = conn.get('token')
    
         return HttpResponse(token)

     l  在路由层分发路由

    url(r'^settest/', views.settest),
    url(r'^gettest/', views.gettest)
  • 相关阅读:
    C/C++中的堆、栈和队列
    网卡工作状态检测
    Delphi 2007 的midas程序注册问题
    使用SQL语句备份与恢复数据库
    C/C++中的堆、栈和队列
    Delphi 2007 的midas程序注册问题
    如何使用VirtualBox的共享文件夹(转)
    如何使用VirtualBox的共享文件夹(转)
    C语言struct的使用
    printf常用格式
  • 原文地址:https://www.cnblogs.com/liusijun113/p/10638305.html
Copyright © 2011-2022 走看看