zoukankan      html  css  js  c++  java
  • python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    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:Usersajie>workon flask
    (flask) C:Usersajie>d:
    (flask) d:python_envsflask>pip install redis

    2.简单测试

    #coding:utf-8
    
    import 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_envsflask>python python_redis.py
    b'jhon'

    3.python操作redis的常用方法

    #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()
  • 相关阅读:
    牛客-Python-字符流中第一个不重复的字符
    牛客网-python-表示数值的字符串
    牛客网-(标星)正则表达式的匹配
    牛客网-构建乘积数组
    牛客网-和为S的两个数字
    new code-和为S的连续正数序列
    newcode-平衡二叉树
    Reinforcement Learning学习笔记|Deep Q-learning算法
    Reinforcement Learning学习笔记|Q-learning算法
    C++|重拾|笔记20190307
  • 原文地址:https://www.cnblogs.com/reblue520/p/8549336.html
Copyright © 2011-2022 走看看