1. 程式人生 > >python操作三大主流資料庫(12)python操作redis的api框架redis-py簡單使用

python操作三大主流資料庫(12)python操作redis的api框架redis-py簡單使用

#coding:utf-8

import redis

class 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 rest def test_get(self): '''get -- 獲取值
''' rest = self.r.get('user2') print(rest) return rest def test_mset(self): ''' mset -- 設定多個鍵值對 ''' d = { 'user3': 'Bob', 'user4': 'Bobx' } rest = self.r.mset(d) print(rest) return rest def test_mget(self):
''' mset -- 設定多個鍵值對 ''' d = ['user3','user4'] rest = self.r.mget(d) print(rest) return rest def 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和hkeys m = { '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()