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的框架中为MySQL实现restful接口的教程
Apr 08 Python
python中requests和https使用简单示例
Jan 18 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
使用Python来开发微信功能
Jun 13 Python
深入浅析Python的类
Jun 22 Python
详解python 注释、变量、类型
Aug 10 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
基于python图像处理API的使用示例
Apr 03 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
python3将变量输入的简单实例
Aug 19 Python
python 提高开发效率的5个小技巧
Oct 19 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
mysql 字段类型说明
2007/04/27 PHP
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
PHPMailer发送邮件
2016/12/28 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
python操作CouchDB的方法
2014/10/08 Python
python删除过期文件的方法
2015/05/29 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
学生自我鉴定
2013/12/18 职场文书
电子专业自荐信
2014/07/01 职场文书
工作时间调整通知
2015/04/24 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
行政诉讼答辩状
2015/05/21 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技