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赋值操作方法分享
Mar 23 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
跟老齐学Python之玩转字符串(2)
Sep 14 Python
Python实现Linux的find命令实例分享
Jun 04 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
解决python明明pip安装成功却找不到包的问题
Aug 28 Python
PyCharm第一次安装及使用教程
Jan 08 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
python中Mako库实例用法
Dec 31 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连续签到功能实现方法详解
2019/12/04 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
详解Python3中的 input() 函数
2020/03/18 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
作为网站管理者应当如何防范XSS
2014/08/16 面试题
好矿嫂事迹材料
2014/01/21 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
公证书格式
2015/01/23 职场文书
婚礼迎宾词大全
2015/08/10 职场文书