python中的redis操作
- 安装redis模块(用来和redis数据库进行数据交互)
- 安装模块
- pip install redis
- 注意:要进入虚拟环境
- python如何使用redis模块(简单操作示例)
- 创建sr对象(用来和数据库通信)
- 进入python解释器
- workon py_django
- 导入模块
- from redis import *
- 定义对象
- sr = StrictRedis(host='localhost', port=6379, db=0)
- 简写:sr=StrictRedis() host默认为localhost,port默认为6379,db默认为0
- sc模块针对不同类型数据的方法
- keys
- exists、type、delete、expire、getrange、ttl、keys
- string
- set、setex、mset、append、get、mget
- hash
- hset、hmset、hkeys、hget、hmget、hvals、hdel
- list
- lpush、rpush、linsert、lrange、lset、lrem
- set
- sadd、smembers、srem
- zset
- zadd、zrange、zrangebyscore、zscore、zrem、zremrangebyscore
- string常见方法
- 字符串常见方法:
- 设置一个值:
- sr.set('hello', 'world')
- 添加或者修改成功会返回True
- 获取一个值:
- sr.get('hello')
- 给key追加内容:
- sr.append('hello','/')
- 设置过期时间:sr.setex('k','v',10)
- 查看剩余时间:sr.ttl('key')
- 设置多个值:
- sr.mset(k1='v1', k2='v2')
- sr.mset({'k1':'v1', 'k1':'v1'})
- 获取多个值:
- sr.mget('k1','k2')
- sr.mget(['k1','k2'])
- hash常见方法:
- 设置key的单个键值对
- sr.hset('key_name', 'key', 'value')
- 设置key的多个键值对
- sr.hmset('key_name', {'k1': 'v1', 'k2': 'v2'})
- 获取key的某个键的值
- sr.hget('key_name','k2')
- 获取key的多个键的值
- sr.hmget('key_name',['k1', 'k2'])
- sr.hmget('key_name','k1', 'k2')
- 获取key的所有键的值
- sr.hgetall('key_name')
- 获取key的所有键
- sr.hkeys('key_name')
- 获取key的所有值
- sr.hvals('key_name')
- list列表常用方法:
- 从列表中弹出一个值
- sr.blpop(["key_name"])
- 列表左侧添加列表
- sr.lpush('liebiao', 'v1','v2','v3')
- 列表右侧添加列表
- sr.rpush('liebiao', 'v4','v5','v6')
- 列表v4前面添加一个值
- sr.linsert('liebiao','BEFORE','v4','cc')
- 列表v5后面添加一个值
- sr.linsert('liebiao','after','v5','dd')
- 注意:
- after和before 大小写无所谓
- 获取列表的长度
- sr.llen('liebiao')
- 列表查看数据
- sr.lrange('liebiao','0','-1')
- set常见操作
- 设置一个key
- sr.sadd('set_name', 'ziduan')
- 获取key的属性
- sr.smembers('set_name')
- sorted set常见操作:
- 设置一个key
- sr.zadd('sorted_name','n1',11,'n2',22)
- 获取key所有的数据
- sr.zrange('sorted_name', 0, -1)
django项目使用redis
- 简单说明
- 之前django的session默认是存在的数据库里面的,我们也可以把session存储在redis里面
- 安装模块
- pip install django-redis-sessions==0.5.6
- 不要不指定版本,不指定版本的话会默认安装一个比较古老的版本
- 配置django的redis内容
- SESSION_ENGINE = 'redis_sessions.session'
- SESSION_REDIS_HOST = 'localhost'
- SESSION_REDIS_PORT = 6379
- SESSION_REDIS_DB = 2
- SESSION_REDIS_PASSWORD = " "
- SESSION_REDIS_PREFIX = 'session_project'
- 定义view函数:
- def session_set(request):
- request.session['name']='itheima'
- return HttpResponse('ok')
- def session_get(request):
- name=request.session['name']
- return HttpResponse(name)
- 定义路由配置规则
- url(r'^session_set/$',views.session_set),
- url(r'^session_get/$', views.session_get),
- 检查效果:
- redis -cli
- select 2
- keys *
- get key_name
- echo "value" | base64 -d
Redis事务
- redis使用事务的步骤
- 使用redis的管道操作
- pipeline = redis_store.pipeline()
- 开启事务操作
- pipeline.multi()
- 进行数据操作
- pipeline.hset(redis_key, p, data)
- 对事物进行提交操作
- pipeline.execute()
- 示例
使用连接池,向redis中插入和取出数据
- 示例: