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 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
Python合并字符串的3种方法
May 21 Python
让python在hadoop上跑起来
Jan 27 Python
Python Django使用forms来实现评论功能
Aug 17 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
python将一组数分成每3个一组的实例
Nov 14 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
python中bytes和str类型的区别
Oct 21 Python
python else语句在循环中的运用详解
Jul 06 Python
python3爬虫中异步协程的用法
Jul 10 Python
基于Python实现的购物商城管理系统
Apr 27 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抽象类 介绍
2012/06/13 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
php简单统计中文个数的方法
2016/09/30 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
JavaScript事件 "事件对象"的注意要点
2016/01/14 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
jQuery实现日历效果
2020/09/11 jQuery
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python实现的批量下载RFC文档
2015/03/10 Python
Python3 操作符重载方法示例
2017/11/23 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
如何教少儿学习Python编程
2020/07/10 Python
如何在C# winform中异步调用web services
2015/09/21 面试题
办公室文员工作职责
2014/01/31 职场文书
优秀学生事迹材料
2014/02/08 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
市场策划求职信
2014/08/07 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
项目战略合作意向书
2015/05/08 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis