程序操作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 从集合中弹出一个元素