1、redis概念
redis也是一个数据库
关系型数据库 MySQL,oracle,sql server,db2,sqlite
sql 数据存在磁盘上
非关系型数据库:MongoDB、redis
没有表,没有sql ,速度比关系型数据库快
redis数据全部都是存在内存里面
redis本身每秒支持30W次的读写,性能好
redis数据不能持久化
2、string类型 redis操作
import redis r=redis.Redis(host='xxxxx',password='HK139bc&*',db=2,port=6379) r.set('liujia','好') #数据库里面新增一个值,修改也是set r.delete('liujia') #删除数据 r.setex('liujia','测试',10) #设置多少秒后key失效 print(r.get('liujia'))#输出是bytes类型的 res=r.get('liujia') print(res.decode()) #把bytes类型转换为字符串 res1='测试' print(res1.encode()) #字符串转换为bytes类型 print(r.keys())#获取到所有的key print(r.keys('li*'))#获取到以liu的key print(r.get('em')) #获取不存在的值返回none r.set('白羊座:刘佳','ceshi') #key里面有冒号,冒号前面的就会是文件夹名字 r.set('白羊座:刘佳:测试','aaaa') #多层文件夹 for k in r.keys(): r.delete(k)#删除所有内容
对redis的操作看结果,需要RedisDesktopManager工具查看
3、哈希类型 redis操作
哈希类型的操作类似与字典,是key-value形式
import redis r=redis.Redis(host='xxx',password='HK139bc&*',db=2,port=6379) r.hset('test_liujia','刘佳','白羊座') r.hset('test_liujia','刘佳1','双鱼座') r.hset('test_liujia','刘佳2','狮子座') print(r.type('test_liujia')) #查看key的类型 print(r.hget('test_liujia','刘佳').decode()) #指定大key和小key获取对应的值 print(r.hgetall('test_liujia')) #获取里面所有的key和value
接上面,已经加入redis的数据,把获取的所有key和value转换为字符串形式
k1=r.hgetall('test_liujia') k2={} for k,v in k1.items(): k2[k.decode()]=v.decode() print(k2) #获取的所有key和value都转换为字符串形式
仍然接上面
r.hdel('test_liujia','刘佳') #删除指定key r.delete('test_liujia') #删除这个key r.expire('test_liujia',100) #设置失效时间 print(r.ttl('test_liujia')) #获取失效时间
4、小练习
连接数据库,查看数据库
查出数据,类型用pymysql.curosrs.DictCour
循环list,取到username当做key
再把小字段转成json,存进去
import pymysql,json,redis host, user, password, db = 'xxxx', 'jxz', '123456', 'jxz' coon = pymysql.connect(user=user, host=host, password=password, db=db, charset='utf8', port=3306) cur = coon.cursor(cursor=pymysql.cursors.DictCursor) sql='select * from my_user;' cur.execute(sql) all_data=cur.fetchall() #print(all_data) r=redis.Redis(host='xxxx',password='HK139bc&*',db=2,port=6379) for k in all_data: r.hset('stu_info_emily',k.get('username'),json.dumps(k)) # m=k.get('username') # r.hset('stu_info_emily',m,json.dumps(k)) cur.close() coon.close()