zoukankan      html  css  js  c++  java
  • 操作Redis+常用命令

    程序操作redis

    1. 安装redis驱动 pip install redis 
    2. 创建redis对象 
    3. 调用方法操作各种类型数据 
    @author: Administrator
    
    import redis 
    
    
    def demo1(): 
        re = redis.Redis(host='127.0.0.1',port=6379) 
        re.set('name', 'zhangsan') 
        # 字节转化为字符串 
        name = str(re.get('name'), encoding="utf-8") 
        print(name) 
    
    def demo2(): 
        '''通过连接池操作redis''' 
        # 一次可以同时打开N个数据库连接! 
        pool = redis.ConnectionPool(host='127.0.0.1', port=6379) 
        re = redis.Redis(connection_pool=pool) 
        # setex 
        re.setex("k1", 60, 'aaaaaa') 
        re.mset({'k2': 'v2v2v2', 'k3': 'v3v3'}) 
        # 设置自增 amount=步长 
        print(re.get('num')) 
        re.incr('num',amount=10) 
        print(re.get('num')) 
    
        # 操作哈希 pname:{'price',200} 
        re.hmset('p1', {'k1':'v1', 'k2': 'v2'}) 
        print(re.hmget('p1', ['k1', 'k2'])) 
        print(re.hgetall('p1')) 
        print(re.hexists('p1', 'k3')) 
    
        # 操作列表 
        # re.lpush('oo', 11,22,33)
    
        # 根据索引获取数据 
        print(re.lindex('oo', 0)) 
        list_count = re.llen('oo') 
        print(list_count) list_count = re.llen('oo') #长度
        for i in range(list_count): 
            print (i,re.lindex('oo', i))
    
        # 查询所有 
        print(re.keys())
    
    def demo3(): 
        pool = redis.ConnectionPool(host='127.0.0.1', port=6379) 
        r = redis.Redis(connection_pool=pool) 
        # 管道里执行的命令可以保证执行的原子性,执行`pipe =r.pipeline(transaction=False)`可以 禁用这一特性 
        pipe = r.pipeline(transaction=True) 
    
        pipe.set('name', 'sb') 
        pipe.set('sex', 'male') 
        #前面两个操作都成功才execute(),否则回滚 
        pipe.execute() 
        print('OK') 
    
    
    if __name__ == '__main__': 
        demo3()
    
    

    django 操作redis

    web框架中, redis经常当成缓存数据库使用! 替换session!
    

    配置

    # django缓存配置 
    CACHES = { 
        "default": { 
             "BACKEND": "django_redis.cache.RedisCache", 
             "LOCATION": "redis://127.0.0.1:6379/5", 
             "OPTIONS": { 
                  "CLIENT_CLASS": "django_redis.client.DefaultClient", 
             } 
       } 
    }
    # 使用django-redis 作为 session 储存后端 
    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    SESSION_CACHE_ALIAS = "default"
    
    使用
    所有的session操作自动存到redis中!
    
    Flask操作redis
    
    ```python
    # 配置文件 
       # 初始化redis工具 
       global redis_store 
       redis_store = redis.StrictRedis(host=config_class.REDIS_HOST, port=config_class.REDIS_PORT) 
       redis_store.set(f"image_code_01", '123456') 
       redis_store.expire("image_code_01", constants.IMAGE_CODE_REDIS_EXPIRES) 
       # 利用flask-session,将session数据保存到redis中 
       Session(app)
    

    redis是内存/缓存数据库.存储的是key:value,读写速度非常快!
    读:11万次/s 8万次/秒

    mongdb介绍

    mongdb 存储原理: 数据库中 包含 集合 集合中保存key:value 对
    

    https://www.cnblogs.com/tuyile006/p/6382062.html

    key

    • keys * 获取所有的key
    • select 0 选择第一个库
    • move mystring 1 将当前的数据库移动到某个数据库中,目标库有的话,则不能移动
    • flush db 清除数据库
    • randomkey 随机key
    • type key 查看类型
    • set key1 valueqq 设置key
    • get ket 获取key所对应的值
    • mset key1 value1 key2 value2 key3 value3 一次性添加多个键值对
    • mget key1 key2 key3 一次获取多个key对应的值
    • del key1 删除key
    • exists key1 判断key是否存在
    • expire key 10 设置过期的时间(时间单位是秒)
    • pexpire key 1000 设置过期的时间(时间单位是毫秒)
    • persist key 删除过期时间
    • string
    • getrange name 0 -1 字符串的分段
    • getset name .... 设置值,返回旧值
    • setnx key value 不存在的话就插入(not exists)
    • setex key time value 过期时间(等同于expire)
    • setrange key index value 从index开始替换value
    • incr age 递增
    • incrby age 10 递增
    • decr age 递增
    • decrby age 10 递减
    • decrby age 10 递减
    • incrbyfloat 增减浮点数
    • append 追加
    • strlen 长度
    • hash
    • hset myhash name 。。。 添加
    • hget myhash name 获取name所对应的值
    • hmset myhash name cxx age 25 note "i am notes" 同时添加多个值
    • hmget myhash name age note 获取name,age,note所对应的值
    • hgetall myhash 获取所有的键值
    • hexists myhash name 判断是否存在
    • hsetnx myhash score 100 设置不存在的
    • hincrby myhash id 1 递增
    • hdel myhash name 删除
    • hkeys myhash 只取key
    • hvalues myhash 只取values
    • hlen myhash 长度
    • list
    • lpush mylist a b c 左插入
    • rpush mylist a b c 右插入
    • lrange mylist 0 -1 数据集合(切片)
    • lpop mylist 删除最左边的第一个元素,会弹出删除的元素
    • rpop mylist 删除最右边的第一个元素,会弹出删除的元素
    • llen mylist 长度
    • lrem mylist count value 删除
    • lindex mylist 2 根据下标来获取值
    • lset mylist 2 n 索引设值(修改值)
    • ltrim mylist 0 4 批量删除
    • linesert mylist before a 插入
    • linesert mylist after a 插入
    • rpoplpush list list2 转移列表的数据
    • set
    • set
    • sadd myset redis
    • smembers myset 数据集合
    • srem myset set1 删除
    • sismember myset set1 判断元素是否在集合中
    • scard key_name 个数
    • sdiff | sinter | sunion 操作:集合间运算:差集 | 交集 | 并集
    • srandmember 随机获取集合中的元素
    • spop 从集合中弹出一个元素
  • 相关阅读:
    数据操作-对数据的增删改查-单表查询和多表查询
    爬虫从入门到放弃
    爬虫从入门到放弃
    创建表的完整语法及表之间的关系
    树链剖分练习总结
    [BZOJ]1984: 月下“毛景树”
    [BZOJ]2243: [SDOI2011]染色
    [BZOJ]4034: [HAOI2015]树上操作
    NOIP2012题解
    CODEVS4633 [Mz]树链剖分练习
  • 原文地址:https://www.cnblogs.com/zuohangyu123/p/14153566.html
Copyright © 2011-2022 走看看