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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
Python快速从注释生成文档的方法
Dec 26 Python
Python内建函数之raw_input()与input()代码解析
Oct 26 Python
python实现kNN算法
Dec 20 Python
理解python中生成器用法
Dec 20 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
Python面向对象之类和实例用法分析
Jun 08 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
Python的collections模块真的很好用
Mar 01 Python
这样写python注释让代码更加的优雅
Jun 02 Python
Python torch.flatten()函数案例详解
Aug 30 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中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
培养自己的php编码规范
2015/09/28 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
围观tangram js库
2010/12/28 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
幼儿教师考核制度
2014/01/25 职场文书
中班幼儿评语大全
2014/04/30 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
村委会贫困证明范文
2014/09/21 职场文书
管理失职检讨书
2015/05/05 职场文书
灵魂歌王观后感
2015/06/17 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL