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脚本监控目录变化代码分享
May 21 Python
解析Python编程中的包结构
Oct 25 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
tensorflow常用函数API介绍
Apr 19 Python
Python学习之迭代器详解
Apr 01 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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
str_replace只替换一次字符串的方法
2013/04/09 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
js下获取div中的数据的原理分析
2010/04/07 Javascript
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python深入学习之装饰器
2014/08/31 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
简单了解python PEP的一些知识
2019/07/13 Python
Python如何调用外部系统命令
2019/08/07 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
员工薪酬福利制度
2014/01/17 职场文书
项目采购员岗位职责
2014/04/15 职场文书
政治表现评语
2014/05/04 职场文书
设计顾问服务计划书
2014/05/04 职场文书
党员群众路线承诺书
2014/05/20 职场文书
上学路上观后感
2015/06/16 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
python如何查找列表中元素的位置
2022/05/30 Python