基于python+mysql+redis缓存设计与数据库关联数据处理

1、添加表

CREATE TABLE tb_signin(

id INT,

user_name VARCHAR(10),

signin_num INT ,

signin_time DATETIME ,

gold_coin INT

);

INSERT INTO tb_signin

VALUES(1, ‘ma‘, 0, NULL, 0),

(2, ‘he‘, 0, NULL, 0),

(3, ‘yu‘, 0, NULL, 0),

(4, ‘hai‘, 0, NULL, 0),

(5, ‘fang‘, 0, NULL, 0);

2、redis缓存键值设计

key               value

表名:主键值:列名   列值

或者:

表名:主键值:列值1:列名1

示例:把id为1的人的签到次数(假设为5)存储到redis中则可如下操作:

set(‘tb_signin_rank:1:signin_num‘, 5)

类似数据库一样,通过主键便可获取其它值

3、redis关联数据库的数据处理模式:

如图,先判断是否存在缓存(通常是根据key),如果存在则从缓存读取,否则从数据库读取并更新缓存

适用场景:对数据实时性要求不高,更新比较不频繁

如下图,先写入redis然后,利用守护进程等方式,定时写入到数据库

如下图,先写入数据库,然后再更新到缓存

####

import ConfigParser
import sys
import redis
import MySQLdb
__name__ ==:
    pool=redis.ConnectionPool(=,=,=)
    r=redis.Redis(=pool)
    config=ConfigParser.ConfigParser()
    :
        dbcon=MySQLdb.connect(=,=,=,=,=,=)
    MySQLdb.Error,e:
        ,e
        sys.exit()
    :
         db_cursor=dbcon.cursor()
         id (,):
             db_cursor.execute(,id)
             db_cursor.execute()
         r.zincrby(, id, )
    e:
         (% e)
         db_cursor.execute()
         db_cursor.close()
         ()
    id (,):
        result=r.zscore(,id)
        result:
            :
                db_cursor=dbcon.cursor()
                db_cursor.execute(,id)
                result=db_cursor.fetchone()[]
                r.zadd(,id,result)
            e:
                % e
                db_cursor.close()
        :
            ()
            result = (result)
        (% (id, result))

###

zadd:命令用于将一个或多个成员元素及其分数值加入到有序集当中

zscore:命令返回成员的有序集合在键比分。如果成员没有在排序集合存在,或键不存在,则返回nil。

时间: 2024-10-11 12:57:53

基于python+mysql+redis缓存设计与数据库关联数据处理的相关文章

第二百九十七节,python操作redis缓存-List类型,可以理解为列表

python操作redis缓存-List类型,可以理解为列表 List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图:

源码包安装(Python mysql redis)

一  源码包安装 (1)python3.6源码包安装 ./configure ------> 定制功能 make make install mysql 源码包 cmake make make install (2) redis 源码包安装 make 修改环境变量 vim /etc/profile 添加以下一行: export PATH=/opt/redis-3.2.10/src:$PATH 生效配置 source /etc/profile (3) 让python链接redis unzip red

Python操作Redis缓存数据库

首先我们需要使用到一个redis库,使用之前先安装一下,使用pip进行安装: pip install redis 安装好了redis库之后,我们只需使用import redis导入即可使用了,大部分都是通过这两个步骤使用的:接下来讲解如何操作Redis数据库,介绍一下Redis的五大数据类型:分别是字符串类型string.列表类型list.集合类型set.哈希类型hash.有序集合类型 sorted set 开启数据库 要注意我们操作之前需要先开启Redis数据库,如何安装Redis数据库(该步

python操作Redis缓存

一.Redis的安装 xshell连上服务器,依次输入以下代码: wget http://download.redis.io/releases/redis-3.0.6.tar.gz tar xzf redis-3.0.6.tar.gz cd redis-3.0.6 make 如果不巧发生以下截图中的错误: 说明未安装gcc,如果是centos系统,输入:yum install gcc安装gcc即可,然后再次输入make执行. 输入make后,很不幸,再次发生如下截图错误: 推测是因为编译库的问题

Redis缓存设计与性能优化

Redis我们一般是用作缓存,扛并发:或者用于某些特定的业务场景,比如前面说到redis各种数据类型的使用场景以及redis的哨兵和集群模式. 这里主要整理了下redis用作缓存,存在的一些问题,以及改善方案. 简单的流程就像这个样子,一般请先到缓存区获取,如果缓存没有再到后端的数据库去查询. 1.缓存穿透 缓存穿透是指,是指查询一个根本不存在数据,这样缓存层里面没有,就会去访问后面的存储层了.如果有大量的这种恶意请求过来,都打向后面的存储层.显然我们的存储层是扛不住这样的压力.这样缓存就失去了

一种基于“哨兵”的分布式缓存设计

14年双11大促缓存方案,今天有点闲暇时间,回顾一下当时的思路. 场景介绍: 大促活动下,对于某些产品进行整点秒杀活动.预计流量是平时峰值5+倍. 商品计算逻辑比较复杂:某个最终展示的商品属性和价格,可能需要上亿次动态条件计算获得,动态条件每时每刻都在变化,并且商品的库存属性属于行业共有库存,每时每刻都在变化. 计算模型:前端机并发去后端获取实时计算数据,然后合并结果,根据用户信息给商品打属性,排序. 头脑风暴 针对这种场景,有很多方案可以尝试,不过总结起来,大概俩个方向:扩容和缓存. 扩容 扩

Redis缓存设计

缓存更新策略 策略 一致性 维护成本 LRU.LRF.FIFO 最差 低 超时剔除 较差 较低 主动更新 强 高 低一致性业务:最大内存和淘汰策略的方式,maxmemory-policy 高一致性业务:超时剔除和主动更新 缓存穿透 解决缓存穿透 适用场景 维护成本 缓存空对象 数据命中不高,数据频繁变化实时性高 代码维护简单,需要过多的缓存空间,数据不一致 布隆过滤器 数据命中不高.数据相对固定.实时性低 代码维护复杂,缓存占用空间小 缓存空对象:针对该类对象需设置较短过期时间. 布隆过滤器:将

使用Redis和Java进行数据库缓存

使用Redis和Java探索数据库缓存,并查看一些不同的缓存策略.最近在优锐课学习收获颇多,记录下来大家一起进步! 为什么数据库缓存如此重要? 你在数据库中拥有的信息越多,随着时间的推移它将变得越慢. 即使是经过精心设计以支持许多并发请求的数据库管理系统,最终也会达到其极限. 数据库缓存是处理这些性能问题的最常见策略之一.缓存涉及将数据库查询的结果保存在更快,更易于访问的位置.正确完成缓存后,缓存将减少查询响应时间,减少数据库负载并降低成本. 但是,缓存也需要谨慎处理,因为它们实际上是在单独的位

【python】redis基本命令和基本用法详解

1.redis连接 redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令, 并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py. import redis 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库 r = redis.Redis(host='192.168.19.130', port=6379) host是