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实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
Python中的pprint折腾记
Jan 21 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
Python编码类型转换方法详解
2016/07/01 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Python线性方程组求解运算示例
2018/01/17 Python
python实现定时提取实时日志程序
2018/06/22 Python
Python any()函数的使用方法
2019/10/28 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
护士演讲稿优秀范文
2014/04/30 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
流动人口婚育证明
2014/10/19 职场文书
会计工作检讨书
2015/02/19 职场文书
员工自我评价范文
2015/03/11 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
学校教学工作总结2015
2015/05/19 职场文书
法定代表人资格证明书
2015/06/18 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python