Python系列之Redis--03.Redis实战项目

python基于redis实现分布式锁,Python面试问项目难点 现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习。 阅读详情
  1. 效果展示

  2. 数据类型:

    • 新闻数据 hash
    • 新闻id String
    • 分页数据 List
    • 排序 Sorted set
  3. 实现功能关键代码

    • 新闻的新增

      
      # 新增新闻数据
      
      def add_news(self, news_obj):
          # 获取新闻id,自增
          int_id = self.r.incr('news_id')
          # 拼接新闻数据hash key(news:2)
          news_id = self._news_id()
          # 存储新闻数据(hash)
          rest = self.r.hmset(news_id, news_obj)
          # 存储新闻的id(list)
          self.r.lpush(self._news_list_name(), int_id)
          # 存储新闻的类别-新闻id(set)
          news_type = self._news_type(news_obj)['news_type']
          self.r.sadd(news_type, int_id)
          return rest
    • 新增事务支持

         '''新增新闻数据(事务支持)'''
      def add_news_width_trans(self, news_obj):
          '''新增新闻+事务支持'''
          '''直接通过管道pipe获取,而不是通过连接获取'''
          try:
              # 事务
              pipe = self.r.pipeline()
      
              # 获取新闻id,自增,这里id只能
              从连接获取,而不能从缓存获取
              int_id = self.r.incr('news_id')
              # 拼接新闻数据hash key(news:2)
              news_id = 'news:%d' % int_id
              # 存储新闻数据(hash)
              rest = pipe.hmset(news_id, news_obj)
              # 存储新闻的id(list)
              pipe.lpush('news', int_id)
              # 存储新闻的类别-新闻id(set)
              news_type = 'news_type:%s' % news_obj['news_type']
              pipe.sadd(news_type, int_id)
              # 事务执行返回结果给rest
              rest = pipe.execute()
          except:
              pass
          return rest
    • 新闻前台首页

       def get_all_news(self):
          '''获取所有新闻数据'''
          # 取所有的新闻的id,从列表中去news
          id_list = self.r.lrange(self._news_list_name(), 0, -1)
          news_list = []
          #循环id列表,获取新闻数据hash
          for int_id in id_list:
              # 新闻的key
              news_id = self._news_id(int_id)
              data = self.r.hgetall(news_id)
              data['id'] = int_id
              news_list.append(data)
          return news_list
    • 分类页

          def get_news_from_cat(self, news_type):
          '''根据新闻的类别来获取新闻数据'''
          news_list = []
          # 获取新闻类别key
          news_type = self._news_type(news_type)
          # 查询该类别所有新闻id
          id_list = self.r.smembers(news_type)
          # 通过循环来查询所有新闻数据
          for int_id in id_list:
              news_id = self._news_id(int_id)
              data = self.r.hgetall(news_id)
              data['id'] = int_id
              news_list.append(data)
          return news_list
    • 详情页

          def get_news_from_id(self, int_id):
          '''根据新闻的id来获取新闻数据'''
          # 获取新闻key
          news_id = self._news_id(int_id)
          # 查询新闻数据hash
          data = self.r.hgetall(news_id)
          data['id'] = int_id
          return data
      
    • 后台首页及分页

          def paginage(self, page=1,per_page=10):
          '''分页数据'''
          if page is None:
              page = 1
          news_list = []
          # 计算开始和结束标记
          start = (page - 1) * per_page
          end = page * per_page - 1
          # 获取当页的id
          id_list = self.r.lrange(self._news_list_name(), start, end)
          # 通过循环来查询数据
          for int_id in id_list:
              news_id = self._news_id(int_id)
              data = self.r.hgetall(news_id)
              data['id'] = int_id
              news_list.append(data)
          return Paginate(news_list, page, per_page)
      
    • 新闻修改和删除

python项目实战之CMDB自动化资产扫描 一 项目介绍 本项目通过KVM虚拟化搭建Linux系统集群,使用 Ansible实现Linux集群下的批量部署与自动化管理,实现Web形式的自动化运维系统,集中批量控制服务器, 最终实现能支撑1000台实例的环境提供管理和自 动化任务, 提高运维工程师的工作质量和效率。 项目基于HTTP实现自动化任务接受和响应接口设计,基于MySQL用作的关系型数据存取, 基于Redis的任务锁机制和消息队列, 基于MongoDB的事件日志记录, 最终实现邮件通知功能、敏感数据加密功能、日志事件记录功能。 这个文档主要目 阅读详情

相关推荐

STM32_WS2811驱动

STM32的WS2811驱动

健身房 2840

《Redis操作Python系列、开发环境与包下载测试|优快云创作打卡》

开发环境:【Win10】、【Redis3.2.100】 开发工具:【PyCharm Community Edition 2021.3.1】 导读: 本章节我们将为大家介绍 Python 如何操作 redis,redis 是一个 Key-Value 数据库,Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型。 Redis服务需要保持在开启状态。 通过pip下载Redis需求包 pip install redis .

小雨下雨的雨 778

线性代数学习笔记(十)——矩阵运算(二)

本篇笔记讲解矩阵的幂运算和矩阵的转置,其中矩阵进行幂运算的前提是矩阵为方阵,矩阵幂运算的两条性质与数的幂运算规则类似;矩阵转置的定义与行列式转置类似,但要注意由于矩阵的行数和列数不同,所以转置之后行数和列数变换。

li2008kui的专栏 1万+

Python操作Redis有哪些最佳实践?

在DocArray中使用Redis后端,基于向量相似性搜索可以快速搭建一个实时商品推荐系统。现在,跟上我们的脚步,一起了解搭建系统的关键步骤,并且深入了解推荐的原理吧!推荐系统会根据用户画像、历史行为(如购买、喜欢、浏览等),给用户的兴趣建模,主动提供个性化推荐。它可以提升转化率并保持用户忠诚度,因而被广泛应用在各类电子商务网站。图片来自:https://www.mdpi.com/2076-3417/10/16/5510/htm过去,构建并部署推荐系统通常是一个非常复杂的任务。但现在,

zhishi0000的博客 1504

【社区分享】从零开始学习 TinyML,建立 TensorFlow 深度学习模型(技术优化篇)

本文来自社区投稿与征集,作者王玉成,ML&IoT Google Developers Expert,温州大学智能锁具研究院总工程师。 了解更多:https://blog.csdn.net/wfing 经过前面几章的讨论,我们了解了TinyML 的概念,完成了一个最简单的TinyML 的模型并且运行在微控制器上,得出最基本的结果。但是在实际的工程应用中,模型建立之后,也需要再进一步结合许多优化方面的技术,这就是我们接下来想要探讨的。 5. 优化 TinyML 这本书也详细的向我...

tensorflowforum的博客 1万+

【LDLTS解析】从重叠峰到精准参数:拉普拉斯深能级瞬态光谱如何重塑半导体缺陷分析

本文深入解析了拉普拉斯深能级瞬态光谱(LDLTS)技术如何革新半导体缺陷分析。针对传统DLTS难以分辨重叠峰的痛点,LDLTS通过拉普拉斯逆变换对高精度电容瞬态曲线进行数学解卷积,成功分离发射率相近的缺陷信号,实现从模糊宽峰到精准独立峰的转变。该技术不仅大幅提升了缺陷激活能和捕获截面等关键参数的提取精度,更推动分析范式从经验拟合转向第一性原理,为先进半导体工艺开发与良率提升提供了强大的精准诊断工具。

weixin_29224309的博客 273

redis的连接与使用

** 一、python连接redis ** 在python中,要操作redis,目前主要是通过一个python-redis模块来实现 1、在python中安装redis模块 pip3 install redis 2、在python中使用redis python连接redis数据库: #!/usr/bin/env python # -*- coding:utf8 -*- import r...

weixin_42370340的博客 583

地平线RDKX3初始配置与USB无线网卡

地平线X3无线网卡配置

Richard_Mei的博客 4077

Python开发运维:Celery连接Redis

Celery是一个强大的 分布式任务队列的异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。通常使用它来实现异步任务(async task)和定时任务(crontab)。Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。Celery是一个基于python开发的分布式系统,它是简单、灵活且可靠的,处理大量消息,专注于实时处理的异步任务队列,同时也支持任务调度。

cronaldo91的博客 3456

嵌入式学习之QT学习---14 QT跨平台运行之把QT程序交叉编译到ARM开发板

想要把qt工程放到开发板上运行,就需要用到交叉编译。由于qt是跨平台的,所以只需要换个编译器编译一下就可以。 以“定时器”的例子为例,在移植之前还需要进行一个准备工作,在windows下运行的时候,电脑屏幕很大,但是运行的窗口只有一点点大,开发板也有外接屏幕,如何让运行窗口自动适配开发板的外接屏幕呢?令其占满屏幕显示,而不是一小块。 第一步:需要设置一下,先给ui布局,如果不布局,控件就不会随着屏幕的大小的变化而变化。 第二步:利用代码来获取屏幕的大小,给widget.cpp文件下添加如下代码 #inclu

qq_42822743的博客 5457

VTsystem背景检查函数Value Valid

Value Valid是个非常实用的函数,如何让它灵活的为我们所用,便是本文的内容。

欢迎来到eee的博客 794

《Redis实战》源码项目使用教程

《Redis实战》源码项目使用教程 1. 项目目录结构及介绍 本项目是《Redis实战》一书的中文注释源码,目录结构如下: riacn-code/ ├── LICENSE.txt # 项目许可证文件 ├── README.rst # 项目说明文件 ├── ria-cover.png # 项目封面图片 ├── ch01_listing_sour...

gitblog_00657的博客 348

国科大学习资料--数据挖掘(刘莹)--第三章习题及参考答案

国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 国科大学习资料–数据挖掘(刘莹)–第三章习题及参考答案 第 3 章分类与回归 3.1简述决策树分类的主要步骤。 答:决策树生成的过程如下: (1)对数据源进行数据预处理, 得到训练集和测试集; (2)对训练集进行训练; (3)对初始决策树进行树剪枝; (4)由所得到的决策树提取分类规则; (5)使用测试数据集进行预测,评估决策树模型; 3.2给定决策树,选项有:(1)将决策树转换成规则,然后对结果

无名何许人的博客 3092

实战|教你用Python玩转Redis

大家好,我是辰哥。之前辰哥已经给大家教了Python如何去连接Mysql(实战|教你用Python玩转Mysql),并进行相应操作(插、查、改、删)。除了Mysql外,Python最常搭配...

公众号:Python研究者 443

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

redis_03 Python-Redis

Python-Redis 一、安装模块 在虚拟环境中安装以下几个模块 pip install redis #安装redis模块 pip install redis-py-cluster #支持python安装集群 pip install django-redis #支持django 二、连接Redis 1、连接 from redis import Redis red = Redis(h...

qq_37839978的博客 161

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python中redis的用法_python中redis的安装和使用

《Redis实战》一第1章 初识Redis本节书摘来异步社区《Redis实战》一书中的第1章,第1.1节,作者: 【美】Josiah L. Carlson(约西亚 L.卡尔森)译者: 黄健宏 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。第1章 初识RedisRedis实战本章主要内容Redis与其他软件的相...文章异步社区2017-05-021219浏览量初识Redis及...

weixin_39884832的博客 641

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python Web实战项目实战

├─1Django基础 │ ├─day1视频 │ │ 01-no-sql--了解.mp4 │ │ 02-redis简介--了解.mp4 │ │ 03-redis的安装和配置--了解.mp4 │ │ 04-redis客户端和服务器指令--了解.mp4 │ │ 06-string操作.mp4 │ │ 07-键操作.mp4 │ │ 08-hash操作.mp4 │ │ 09-列表操作.mp4 │ │ 10...

runwuwushengxiyu的博客 653

【Redis教程】与Python交互03

请参考视频:redis教程 目录 3.1redis中常用命令 3.2redis与Python的交互 安装:pip install redis==3.3.5 连接: RtrictRedis对象与python的交互 StrictRedis对象方法 3.3redis的配置文件 3.4主从搭建 3.4.1主从简介 3.4.2主从配置步骤 3.4.2.1主的配置 3.4.2.2从的...

gecko 217

nosql--03Redis数据库与python交互

文章目录Redis与python交互redis保存sessionsettings.pyviews.py Redis与python交互 首先需要导入redis from redis import StrictRedis if __name__ == '__main__': # 创建一个strictrdis对象,用于链接Redis数据库 try: sr=StrictR...

spec_yue 274

Docling 转换置信度评分(Confidence Scores)权威指南:看懂 QualityGrade、四类分数与质量门槛

本指南以 Docling 官方概念文档 [docs/concepts/confidence_scores.md](https://link.gitcode.com/i/d9efe3d1c0e76f0d9043b4ebcfb088d5) 为核心,结合仓库源码 [docling/datamodel/base_models.py](https://link.gitcode.com/i/a19ba9c88

gitblog_00232的博客 668

03_redis_python操作redis

import redis # 封装 class MyRedisList(object): """python操作redis数据的封装""" def __init__(self, db=0, decode=True): # 1. 连接 self.conn = redis.StrictRedis(db=db, decode_responses...

argb78546的博客 181

Python爬虫实战--Day03

Python爬虫实战之京东商品信息爬取

weixin_62944327的博客 1604

python应用之爬虫实战

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。本章详细介绍网络爬虫实战技巧。

Linux运维老纪的博客 2238

Python3 学习系列 丨 博客目录索引

整个博客有关 Python 学习目录索引,方便快捷定位查询 基础学习篇 Python3 基础学习笔记 C01【变量和简单数据类型】 Python3 基础学习笔记 C02【列表】 Python3 基础学习笔记 C03【操作列表】 Python3 基础学习笔记 C04【if 语句】 Python3 基础学习笔记 C05【字典】 Python3 基础学习笔记 C06【用...

BOB'S BLOG 3876

Redis AI 资源项目常见问题解决方案

Redis AI 资源项目常见问题解决方案 基础介绍 Redis AI 资源项目是一个开源项目,旨在提供一个关于Redis在AI生态系统中应用的综合资源列表,包括代码示例、演示、教程、集成案例等。该项目主要使用Python编程语言,同时也涉及其他技术栈,如Redis数据库、前端技术(如React)以及机器学习框架(如TensorFlow和PyTorch)。 主要编程语言 Python 新手常见...

gitblog_00819的博客 387

数据库—03Redis编程

一、Redis数据库简介 1、Redis介绍 NoSQL(NoSQL = Not Only SQL ),意为“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。Redis就是一种非关系型数据库。 Redis(Remote Dictionary Server)远程字典数据服务的缩写,由意大...

小黑的博客 618
上一篇: Python之虚拟环境
下一篇: Python系列之MySQL--01.基础知识
Young-zhou
博客等级 码龄10年 10粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值