Python调用Redis的示例代码


Posted in Python onNovember 24, 2020
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# *************************************
# @Time  : 2019/8/12
# @Author : Zhang Fan
# @Desc  : Library
# @File  : MyRedis.py
# @Update : 2019/8/23
# *************************************
import redis


class MyRedis(object):
  """
  ===================================================================
  =====================    MyRedis    ========================
  ===================================================================
  """
  def __init__(self):
    self.redis_conn = None
    self.redis_db = None

  def connect_to_redis(self, redis_host, redis_port=6379, db=0, password=None):
    """
    连接到Redis服务器
    """
    self.redis_db = db
    print('Executing : Connect To Redis | host={0}, port={1}, db={2}, password={3}'
           .format(redis_host, redis_port, self.redis_db, password))
    try:
      self.redis_conn = redis.StrictRedis(
        host=redis_host, port=redis_port, db=self.redis_db, password=password)
    except Exception as ex:
      logger.error(str(ex))
      raise Exception(str(ex))

  def redis_key_should_be_exist(self, name):
    """
    验证redis存在指定键
    """
    if not self.redis_conn.exists(name):
      logger.error(("Redis of db%s doesn't exist in key [ %s ]." % (self.redis_db, name)))
      raise AssertionError

  def redis_key_should_not_be_exist(self, name):
    """
    验证redis不存在指定键
    """
    if self.redis_conn.exists(name):
      logger.error(("Redis of db%s exist in key [ %s ]." % (self.redis_db, name)))
      raise AssertionError

  def getkeys_from_redis_bypattern(self, pattern, field=None):
    """
    获取redis所有键值
    """
    keys_list = list()
    print('Executing : Getall Key | %s' % pattern)
    if field is None:
      return self.redis_conn.keys(pattern)
    else:
      keys = self.redis_conn.keys(pattern)
      for key in keys:
        if not self.redis_conn.hget(key, field) is None:
          keys_list.append(key)
      return keys_list

  # ========================== String Type =============================
  def get_from_redis(self, name):
    """
    获取redis数据
    """
    print('Executing : Get Key | %s' % name)
    return self.redis_conn.get(name)

  def del_from_redis(self, name):
    """
    删除redis中的任意数据类型
    """
    return self.redis_conn.delete(name)

  def set_to_redis(self, name, data, expire_time=0):
    """
    设置redis执行key的值
    """
    return self.redis_conn.set(name, data, expire_time)

  def append_to_redis(self, name, value):
    """
    添加数据到redis
    """
    return self.redis_conn.append(name, value)

    # ========================== Hash Type ==========================
  def hgetall_from_redis(self, name):
    """
    获取redis hash所有数据
    """
    print('Executing : Hgetall Key | %s' % name)
    return self.redis_conn.hgetall(name)

  def hget_from_redis(self, name, key):
    """
    获取redis hash指定key数据
    """
    print('Executing : Hget Key | %s' % name)
    return self.redis_conn.hget(name, key)

  def hset_to_redis(self, name, key, data):
    """
    设置redis指定key的值
    """
    print(('Executing : Hset Redis | name={0}, key={1}, data={2}'
           .format(name, key, data)))
    return self.redis_conn.hset(name, key, data)

  def hdel_to_redis(self, name, *keys):
    """
    删除redis指定key的值
    """
    print('Executing : Hdel Key | ', *keys)
    self.redis_conn.hdel(name, *keys)

  # ========================= ZSet Type ================================
  def get_from_redis_zscore(self, name, values):
    """
    获取name对应有序集合中 value 对应的分数
    """
    try:
      return int(self.redis_conn.zscore(name, values))
    except:
      return self.redis_conn.zscore(name, values)

  def get_from_redis_zrange(self, name, start=0, end=10):
    """
    按照索引范围获取name对应的有序集合的元素
    """
    return self.redis_conn.zrange(name, start, end, desc=False, withscores=True, score_cast_func=int)

  def del_from_redis_zrem(self, name, values):
    """
    删除name对应的有序集合中值是values的成员
    """
    return self.redis_conn.zrem(name, values)

  def add_from_redis_zadd(self, name, value, score):
    """
    在name对应的有序集合中添加一条。若值存在,则修改对应分数。
    """
    return self.redis_conn.zadd(name, {value: score})

  def count_from_redis_zcard(self, name):
    """
    获取name对应的有序集合元素的数量
    """
    return self.redis_conn.zcard(name)


if __name__ == '__main__':
  print('This is test.')
  mr = MyRedis()

以上就是Python调用Redis的示例代码的详细内容,更多关于Python调用Redis的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python的迭代器和生成器
Jul 29 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
对Python中数组的几种使用方法总结
Jun 28 Python
python scp 批量同步文件的实现方法
Jan 03 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
python批量修改xml属性的实现方式
Mar 05 Python
python3 简单实现组合设计模式
Jul 02 Python
python3实现Dijkstra算法最短路径的实现
May 12 Python
基于django和dropzone.js实现上传文件
Nov 24 #Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 #Python
Django web自定义通用权限控制实现方法
Nov 24 #Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 #Python
Pycharm安装python库的方法
Nov 24 #Python
python opencv角点检测连线功能的实现代码
Nov 24 #Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 #Python
You might like
php简单统计在线人数的方法
2016/05/10 PHP
php表单处理操作
2017/11/16 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
Python正则表达式教程之一:基础篇
2017/03/02 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
关于人生的感言
2014/01/17 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
建党伟业观后感
2015/06/01 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
element多个表单校验的实现
2021/05/27 Javascript
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Python 发送SMTP邮件的简单教程
2021/06/24 Python
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers
Mysql开启外网访问
2022/05/15 MySQL
Python 中面向接口编程
2022/05/20 Python