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自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
Python中使用partial改变方法默认参数实例
Apr 28 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
windows下添加Python环境变量的方法汇总
May 14 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
Python测试线程应用程序过程解析
Dec 31 Python
python对execl 处理操作代码
Jun 22 Python
python如何停止递归
Sep 09 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将csv文件导入到mysql数据库的方法
2014/12/24 PHP
PHP之预定义接口详解
2015/07/29 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
js中时间格式化的几种方法
2018/07/22 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
python删除文件示例分享
2014/01/28 Python
Python map和reduce函数用法示例
2015/02/26 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
处理Python中的URLError异常的方法
2015/04/30 Python
Python OS模块常用函数说明
2015/05/23 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python实现一个猜拳游戏
2020/04/05 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
岳父生日宴会答谢词
2014/01/13 职场文书
高中军训感言400字
2014/02/24 职场文书
团代会宣传工作方案
2014/05/08 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
人口与计划生育责任书
2015/05/09 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
女儿满月酒致辞
2015/07/29 职场文书