Python学习(二十三)操作redis

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()
 

猜你喜欢

转载自www.cnblogs.com/emilyliu/p/9021449.html