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 GAE、Django导出Excel的方法
Nov 24 Python
python mysqldb连接数据库
Mar 16 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
基于Python快速处理PDF表格数据
Jun 03 Python
Python dict的常用方法示例代码
Jun 23 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 Python
python基础之类方法和静态方法
Oct 24 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获取当月最后一天函数分享
2015/02/02 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
Ubuntu下安装PyV8
2016/03/13 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
2015年消防工作总结
2015/04/24 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
无罪辩护词范文
2015/05/21 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL