Redis-与Python交互

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中插入和取出数据
  • 示例:

刘小恺(Kyle) wechat
如有疑问可联系博主