连接方式:单次连接/连接池
import redis
def Once_connect():
"""
此种连接为单次连接,耗资源
:return:设置的name值
"""
redis_coon = redis.Redis(host='localhost', port=6379, db=5)
redis_coon.set('name', 'susu')
return redis_coon.get('name').decode('utf-8')
def Twice_connect():
"""
当程序创建数据源实例时,系统会一次性创建多个数据库连接,并把这些数据库连接保存在连接池中,
当程序需要进行数据库访问时,无需重新新建数据库连接,而是从连接池中取出一个空闲的数据库连接
:return:设置的age值
"""
redis_pool = redis.ConnectionPool(host='localhost', port=6379, db=5)
redis_coon = redis.Redis(connection_pool=redis_pool)
redis_coon.set('age', '20')
return redis_coon.get('age').decode('utf-8')
print(Once_connect())
print(Twice_connect())
存储操作:String/Hash/List/Set/Sorted Set
String 类型(字符串)
def String_operation():
redis_pool = redis.ConnectionPool(host='localhost', port=6379, db=5)
redis_coon = redis.Redis(connection_pool=redis_pool)
"""
命令1:get(name)
用于获取值
命令2:set(name, value, ex=None, px=None, nx=False, xx=False)
ex:设置过期时间(单位:s) —— 对应setex
px:设置过期时间(单位:ms) —— 对应psetex
nx:如果设置为True,则只有当name不存在时才能执行 —— 对应setnx
xx:如果设置为True,则只有当name存在时才能执行
"""
redis_coon.set('name', 'susu', ex=60, nx=False, xx=False)
redis_coon.set('age', '20', px=1000 * 60, nx=True, xx=False)
redis_coon.set('sex', 'man', px=1000 * 60, nx=False, xx=False)
susu_dict = {}
susu_dict.setdefault('name', redis_coon.get('name').decode('utf-8'))
susu_dict.setdefault('age', redis_coon.get('age').decode('utf-8'))
susu_dict.setdefault('sex', redis_coon.get('sex').decode('utf-8'))
print(susu_dict)
"""
命令3:setex(name, time, value)
time 过期时间单位为秒
命令4:psetex(name, time_ms, value)
time_ms 过期时间单位为毫秒
"""
fruit_dict = {}
redis_coon.setex('red', 60, 'apple')
redis_coon.psetex('yellow', 60 * 1000, 'banana')
redis_coon.psetex('green', 60 * 1000, 'cucumber')
fruit_dict.setdefault('red', redis_coon.get('red').decode('utf-8'))
fruit_dict.setdefault('yellow', redis_coon.get('yellow').decode('utf-8'))
fruit_dict.setdefault('green', redis_coon.get('green').decode('utf-8'))
print(fruit_dict)
"""
命令5:setnx(name, value)
只有当name不存在时才执行
命令6:mset(*args, **kwargs)
以关键字形式传递参数
or 传入字典 —— {'name': 'nana', 'age': 20, 'sex': 'woman'}
命令7:mget(*args, **kwargs)
以传入字符串形式获取值(返回值是一个列表) —— 获取的是二进制格式(需要利用.decode()进行转换)
"""
redis_coon.setnx('sweet', 'milk')
nana_dict = {'name': 'nana', 'age': 20, 'sex': 'woman'}
redis_coon.mset(nana_dict)
name, age, sex, sweet = redis_coon.mget('name', 'age', 'sex', 'sweet')
new_nana_dict = {'name': name.decode(), 'age': age.decode(), 'sex': sex.decode(), 'like': sweet.decode()}
print(new_nana_dict)
"""
命令8:getset(name, value)
命令9:getrange(key, start, end)
命令10:setrange(name, offset, value)
"""
String_operation()
Hash 类型(哈希)
List 类型(列表)
Set 类型(无序集合)
Sorted Set 类型(有序集合)
|