python操作三大主流數據庫(12)python操作redis的api框架redis-py簡單使用
redispy安裝
安裝及簡單使用:https://github.com/andymccurdy/redis-py
api參考文檔:http://redis-py.readthedocs.io/en/latest/
1.安裝redis-py
?
pip install redis C:\Users\ajie>workon flask (flask) C:\Users\ajie>d: (flask) d:\python_envs\flask>pip install redis
2.簡單測試
#coding:utf-8import redis# redis.Redis()兼容老版本,redis.StrictRedis()不考慮兼容性 r = redis.Redis(host='localhost', port=6379, db=0) # r = redis.StrictRedis(host = 'localhost', port=6379, db=0) user1 = r.get('user1') print(user1)(flask) d:\python_envs\flask>python python_redis.py b'jhon'
3.python操作redis的常用方法
#coding:utf-8import redisclass Base(object):def __init__(self):self.r = redis.StrictRedis(host = 'localhost', port=6379, db=0)class StringTest(object):def __init__(self):# redis.Redis()兼容老版本,redis.StrictRedis()不考慮兼容性# self.r = redis.Redis(host='localhost', port=6379, db=0)self.r = redis.StrictRedis(host = 'localhost',port=6379, db=0,decode_responses=True)def test_set(self):''' set -- 設置值 '''rest = self.r.set('user2', 'amy')print(rest)return restdef test_get(self):'''get -- 獲取值'''rest = self.r.get('user2')print(rest)return restdef test_mset(self):''' mset -- 設置多個鍵值對 '''d = {'user3': 'Bob','user4': 'Bobx'}rest = self.r.mset(d)print(rest)return restdef test_mget(self):''' mset -- 設置多個鍵值對 '''d = ['user3','user4']rest = self.r.mget(d)print(rest)return restdef test_del(self):''' del刪除鍵值 '''rest = self.r.delete('user3')print(rest)def test_push(self):''' lpush/rpush -- 從左/右插入數據 '''t = ['Amy', 'Jhon']# 如果不加*則會把兩個元素當做整體存入rest = self.r.lpush('l_eat3', *t)print(rest)rest = self.r.lrange('l_eat3', 0, -1)print(rest)def test_pop(self):''' lpop/rpop 移除最左/右邊的元素并返回值'''rest = self.r.lpop('l_eat3')print(rest)rest = self.r.lrange('l_eat3', 0, -1)print(rest)class SetTest(Base):def test_sadd(self):''' sadd --添加元素 '''l = ['cat', 'dog', 'monkey']# rest = self.r.sadd('zoo2', l)rest = self.r.sadd('zoo2', *l)print(rest)rest = self.r.smembers('zoo2')print(rest)def test_srem(self):''' srem -- 刪除元素 '''rest = self.r.srem('zoo2', 'monkey')print(rest)rest = self.r.smembers('zoo2')print(rest)def test_sinter(self):''' sinter --返回元素的交集 '''rest = self.r.sinter('zoo2', 'zoo1')print(rest)class HashTest(Base):def hset_test(self):''' hset設置新聞內容 self.r.hset(1,'title','朝鮮特種部隊視頻公布展示士兵身體素質與意志')self.r.hset(1,'content','content01')self.r.hset(1,'img_url','/static/img/news/01.png')self.r.hset(1,'is_valid','true')self.r.hset(1,'news_type','推薦')self.r.hset(2,'title','男子長得像\"祁同偉\"挨打 打人者:為何加害檢察官')self.r.hset(2,'content','因與熱門電視劇中人物長相相近,男子竟然招來一頓拳打腳踢。4月19日,打人男子周某被抓獲。半個月前,酒后的周某看到KTV里有一名男子很像電視劇中的反派。二話不說,周某沖上去就問你為什么要加害檢察官?男子莫名其妙,回了一句神經病。周某一聽氣不打一處來,對著男子就是一頓拳打腳踢,嘴里面還念叨著,“叫你加害檢察官,我打死你!”隨后,周某趁機逃走。受傷男子立即報警,周某被上海警方上網通緝')self.r.hset(2,'img_url','/static/img/news/02.png')self.r.hset(2,'is_valid','true')self.r.hset(2,'news_type','百家')'''''' mset/mget -- 設置/獲取散列值'''rest = self.r.hset('stu:002','name','tom')print(rest)rest = self.r.hexists('stu:002','name')print(rest)rest = self.r.hget('stu:002', 'name')print(rest)def mset_test(self):''' 獲取新聞的數據 '''# rest = self.r.hget(1,'title')# print(rest.decode('utf-8'))# rest = self.r.hget(1, 'news_type')# print(rest.decode('utf-8'))# rest = self.r.hget(3,'title')# print(rest.decode('utf-8'))# rest = self.r.hget(3, 'news_type')# print(rest.decode('utf-8'))# mset和hkeysm = {'name':'lily','age':18,'grade':90}rest = self.r.hmset('stu:003', m)print(rest)rest = self.r.hkeys('stu:003')print(rest)rest = self.r.hvals('stu:003')print(rest)def test_hgetall(self):data = self.r.hgetall('news:3')print(data['title'].decode('utf-8'))print(data['content'].decode('utf-8'))def main():# st = StringTest()# st.test_set()# st.test_get()# st.test_mset()# st.test_mget()# st.test_del()# st.test_push()# st.test_pop()# set_test = SetTest()# set_test.test_sadd()# set_test.test_srem()# set_test.test_sinter() ht = HashTest()# ht.mset_test()# ht.hset_test()# ht.hget_test() ht.test_hgetall()if __name__ == "__main__":main()
?