13.9. Python操作Redis数据库

13.9.1. 基础操作

#!/usr/bin/env python
#-*- coding:utf8 -*-
import redis
#入门及使用
'''
import redis
conn = redis.Redis(host="127.0.0.1", port=6379)
#写入两条数据
conn.set('name', 'hujianli')
conn.set('url', 'www.baidu.com')

#获取一条数据
print(conn.get('name'))
print(conn.get('url'))
'''


'''
##使用连接池连接到Redis
pool = redis.ConnectionPool(host="127.0.0.1", port=6379)
conn = redis.Redis(connection_pool=pool)
print(conn.set('hello', 'world'))
print(conn.get('hello'))

'''

##API
'''
redis-py提供的API用来操作redis

String API
set(name, value, ex=None, px=None, nx=False, xx=False)

参数  描述
ex  过期时间(秒)
px  过期时间(毫秒)
nx  如果设置为True,则只有name不存在时,当前set操作才执行
xx  如果设置为True,则只有name存在时,岗前set操作才执行
'''

eg

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/7/29 17:06
# filename: 01.staduy001.py
import redis

r = redis.StrictRedis(host="localhost", port=6379, db=0)

p1 = {
    "name": "胡建力",
    "age": 18,
    "sex": "Man",
}

p2 = {
    "name": "科比",
    "age": 30,
    "sex": "Man",
}

# 将数据保存到Redis中
r.hmset("person:1", p1)
r.hmset("person:2", p2)

# 关闭链接
r.connection_pool.disconnect()
../../_images/python-redis00001.png

13.9.2. 封装Redis的类

#!/usr/bin/env python
#-*- coding:utf8 -*-
import redis

r = redis.Redis()

class MyRedis():
    def __init__(self,ip, passwd, port=6379,db=0):
        #构造函数
        try:
            self.r = redis.Redis(host=ip, password=passwd,port=port, db=db)

        except Exception as e:
            print('redis连接失败,错误信息%s' %e)

    def str_get(self, k):
        res = self.r.get(k)
        if res:
            return res.decode()

    def str_set(self, k ,v, time=None):
        self.r.set(k, v, time)

    def delete(self, k):
        tag = self.r.exists(k) #判断这个Key是否存在
        if tag:
            self.r.delete(k)
            print('删除成功')
        else:
            print('这个key不存在')
    def hash_hget(self, name, key):
        res = self.r.hget(name, key)
        if res:
            return res.decode()

    def hash_hset(self,name, k, v):
        self.r.hset(name, k, v)

    def hash_getall(self, name):
        res = self.r.hgetall()
        new_dict = {}
        if res:
            for k, v in res.items():
                k = k.decode()
                v = v.decode()
                new_dict[k] = v
        return new_dict

    def hash_del(self, name,k):
        res = self.r.hdel(name, k)
        if res:
            print('删除成功')
            return True
        else:
            print('删除失败.该key不存在')
            return False
    @property
    def clean_redis(self):
        self.r.flushdb() #清空redis
        print('清空redis成功.')
        return 0


a = MyRedis('1118.24.3.40','密码')
a.clean_redis