操作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 从集合中弹出一个元素
posted @ 2020-12-18 10:12  我觉得勉强还行  阅读(120)  评论(0编辑  收藏  举报