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发送邮件示例(支持中文邮件标题)
Feb 16 Python
python logging类库使用例子
Nov 22 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python微医挂号网医生数据抓取
Jan 24 Python
Python中栈、队列与优先级队列的实现方法
Jun 30 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
Django之腾讯云短信的实现
Jun 12 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
Nov 24 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
python 逐步回归算法
Apr 06 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
virtualenv隔离Python环境的问题解析
Jun 21 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
推荐25款php中非常有用的类库
2014/09/29 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python中adb有什么功能
2020/06/07 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
中科创达面试题
2016/12/28 面试题
钳工实习自我鉴定
2013/09/19 职场文书
经典大学生求职信范文
2014/01/06 职场文书
学校七一活动方案
2014/01/19 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
2014年科研工作总结
2014/12/03 职场文书
2015年教师节慰问信
2015/03/23 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript