#!/usr/bin/env python # -*- coding: utf-8 -*- # author:albert time:2019/2/11 # 数据缓存系统: # 1:mongodb:是直接持久化,直接存储于硬盘的缓存系统 # 2:redis: 半持久化,存储于内存和硬盘 # 3:memcache:数据只能存储在内存里的缓存系统 import redis # 连接方式:redis提供了2个类 # 1:StrictRedis:实现大部分官方的命令 # 2:Redis:是StrictRedis的子类,用于向后兼容旧版的redis。 # 一、连接Redis数据库 # ①普通连接 # rs = redis.Redis(host='*',port=6379,password='*******',socket_timeout=1000) # rs.set('name','jack') # print(rs.get('name').decode()) # ②连接池 # pool = redis.ConnectionPool(host='*',port=6379,password='******',db=1) # r = redis.Redis(connection_pool=pool) # r.set('name','jack') # print(r.hgetall('info')) # 二、String类型存取 # r.set('name','jack',ex=None,px=None,nx=False,xx=False) # ex,过期时间(秒) # px,过期时间(毫秒) # nx,如果设置为True,则只有key不存在时,当前set操作才执行,同#setnx(key, value) # xx,如果设置为True,则只有key存在时,当前set操作才执行 # 设置过期时间秒级 # r.setex('name','Tom',1) # 设置过期时间毫秒级 # r.psetex('name',10,'Ben') # 批量设置值,两种传值方式 # r.mset({'name1':1,'name2':2}) # r.mset(name1=11,name2=22,name3=33) # 获取值和批量获取值 # print(r.get('name')) # print(r.mget('name','name1','name2','name3')) # 获取某一key的值得长度 # print(r.strlen('name')) # 追加内容 # r.append('name',' is boy!') # 三、Hash类型:一个name对应一个dic字典来存储。 # 设置hash的值 # r.hset('hname','hkey','hvalue') # r.hset('hname','hkey1','hvalue1') # 获取hash的值 # print(r.hget('hname','hkey')) # print(r.hgetall('hname')) # 批量设置 # r.hmset('hname',{'name1':1,'name2':2,'name3':3}) # print(r.hmget('hname','name1','name2','name3')) # 获取hash键值对的个数 # print(r.hlen('hname')) # 获取hash键值对中所有keys # print(r.hkeys('hname')) # 获取hash键值对中所有values # print(r.hvals('hname')) # 查看hash键值对中是否存在指定的key # print(r.hexists('hname','name1')) # print(r.hexists('hname','name5')) # 删除hash键值对中的key # print(r.hdel('hname','name1','name5')) # 四、list类型:一个name对应一个列表存储。 # 从左边添加 # r.lpush('list',1,2,3,4,5,6,7) # 从右边添加 # r.rpush('list',8,9,10) # 获取列表长度 # print(r.llen('list')) # 向列表中的第一个1后插入字母A,如果列表中不存在1,则不会插入 # r.linsert('list','AFTER',1,'A') # 对某一位置重新赋值 # r.lset('list',0,'A') # 删除列表中指定的值 # r.lrem('list','A') # 删除一个元素 # r.lpop('list') # 根据索引获取元素 # print(r.lindex('list',3)) # 五、set类型:集合是不允许重复的列表 # 向集合中添加元素 # r.sadd('dict','a') # r.sadd('dict','a','b') # r.sadd('dict2','d','a') # 统计集合元素个数 # print(r.scard('dict')) # 列出集合所有元素,已集合的形式 # print(r.smembers('dict')) # 对比第一个集合的元素是否在其他集合中,不在则返回 # print(r.sdiff('dict','dict2')) # 判断元素是否在集合中 # print(r.sismember('dict','d')) # 将一个集合中的元素移动到另外一个集合 # r.smove('dict','dict2','b') # 从集合右侧移除一个元素,并返回该元素 # r.spop('dict2') # 六、其他常用操作 # 根据name删除数据 # r.delete('name1','name2') # 判断是否存在name3 # print(r.exists('name3')) # 根据[ * ? ]等通配符匹配获取redis的name # print(r.keys('*name*')) # 给指定的name设置过期时间 # r.expire('name3',100) # 重命名 # r.rename('name3','name33') # 将指定的name移动到另一db下 # r.move('name33',db=3) # 随机获取redis中的name,并判断类型 # print(r.type(r.randomkey()))
08-16
08-16