突然萌发关于 redis 的想法(1)
本来昨天就打算写这篇了,但是熬到忘了,至于为什么要写这个是因为我昨天在写 redis 的时候突然想到的
注:此篇文章并没有讲解 redis 内部的使用 或 如何使用redis写代码,等等。。仅仅只是突然想到的,如果各位大佬有什么想说的,有什么想补充的,再或者我说的有什么不对的,请不要客气,直接讲出来,我会非常认真的看的
正片开始...
当时想的是,如果一个用户在一个商城系统点击了一个商品添加购物车,并点击自己的购物车,然后购物车展示已添加的商品,这都可以放到redis,看似好像没什么问题,但是我就突然想到,如果这个用户在很早之前就添加了一件商品,而很久之后的今天,点击了自己的购物车,首先 redis 中并没有存储他之前购买的商品( 假设这个时间段中 redis 已经将数据更新到数据库中 ),这个时候,如何将商品展示呢,我想着,这不还是得去数据库(mysql)查吗,既然还是要去数据库查,那为什么还要多 redis 这一步呢,当时,因为这个问题想了很久,实在想不到什么,然后去各个地方去问,虽然并找不到人讨论( 还是很难受的。。),但是,一会后关于这个问题我又想到一点,首先,第一次访问,展示购物车商品肯定要去数据库查询的,如果在访问购物车之前用户已经添加了一件商品,那么将这个商品存储在 redis 中(以用户唯一id为key)的话,那么是不是可以减少一次数据库的查询呢? 你看啊,用户第一次访问这个网站,看到一件商品,然后加入购物车( 此时将这件商品存储在 redis 不直接存储在数据库 ),然后用户点击自己的购物车的时候,就不需要去数据查询刚刚添加的商品了,直接去 redis 中查就行了,但是还是要去数据库查询当前用户购物车中其他商品的数据的,但是,但是,这样可以减少一次在数据库中的查询和存储啊,因为添加购物车后,并没有直接更新到数据库,而是存储在 redis 中了,所以数据库只需要查询他其他的购物数据,刚刚添加的那条数据就不用在数据库查询了,直接从 redis 查询就行了,虽然这看似在数据库中可以少查一条数据,但是,如果一个网站的访问量特别大呢?比如同时有十万次的添加购物车商品的数据,是不是需要在数据库插入十万条数据,这还不算完,如果都点击了购物车展示页面,那么是不是还要除了查询当前用户其他的购物车商品信息外,还需再多十万次的数据库查询?如果存储再 redis 中的话,首先数据库查询当前用户的其他购物车商品信息,然后再去redis 中查询刚刚的存储的十万条信息就行了,这样数据库就减少了十万次的数据更新和查询,最后写一个脚本,等到某一个时间段将 redis 更新到数据的操作就行了。
使用 redis 的主要原因是因为它是存储在内存的,所以查询速度非常快的,虽然有时候存储几条数据看上去并没有什么影响,但是一旦量巨大的话,其作用还是非常大的
再说一下适用场景:
1. 一个页面中某个数据的频繁操作,比如一个商品有不同的价格套餐,那么每次点击不同的套餐就是一次数据更改,所以可用 redis 存储
2. 每次需要请求大量的数据,而且这些数据过一段时间后可能就没什么太大的作用,等等。。
3.额。。其实我也想不到什么了,目前想法有限制,所以欢迎来补充,我也会持续更新这一篇的,虽然可能会很久,如果我以后工作遇到这方面问题,一定会更新
关于我之后的想法
下一篇 : 突然萌发关于 Redis 的想法(2)
突然萌发关于 redis 的想法(1)的更多相关文章
- 突然萌发关于 redis 的想法(2)
接着上篇的说.. 上一篇 : 突然萌发关于 Redis 的想法(1) 今天写商城的时候突然发现,其实商城这种 频繁操作,频繁更新, 等操作,都只需要全部存储在 Redis 中就行了, 可能有部分数据会 ...
- Redis .NET操作
Redis是一个支持数据结构更多的键值对数据库.它的值不仅可以是字符串等基本数据类型,也可以是类对象,更可以是Set.List.计数器等高级的数据结构. Memcached也可以保存类似于Set.Li ...
- Redis 介绍学习
1.Redis 简介 Redis 是一个支持数据结构更多的键值对数据库.它的值不仅可以是字符串等基本数据 类型,也可以是类对象,更可以是 Set.List.计数器等高级的数据结构. Memcached ...
- Java 分布式系统 实现session共享
当然业界已经有很多成熟的解决方案,我罗列如下: 1.服务器实现的session复制或session共享,这类型的共享session是和服务器紧密相关的,比如webSphere或JBOSS在搭建集群时候 ...
- Java 学习笔记(1)——java基础语法
最近抽时间在学习Java,目前有了一点心得,在此记录下来. 由于我自己之前学过C/C++,而Java的语法与C/C++基本类似,所以这一系列文章我并不想从基础一点点的写,我想根据我已有的C/C++经验 ...
- 3java面试题 传智 发的 有用
第一章内容介绍 20 第二章JavaSE基础 21 一.Java面向对象 21 1. 面向对象都有哪些特性以及你对这些特性的理解 21 2. 访问权限修饰符public.private.protect ...
- GIT客户端的使用【原创】
这次分享的方式,采用的是视频的形式,视频是本人录制. 在做项目使用SVN的时候经常有各种错误出现,所以萌发使用git的想法.在学习git的过程中发现一个神器就是分支,虽然在SVN里也有分支,但由于机制 ...
- C# 常见面试问题汇总
1.c#垃圾回收机制 从以下方面入手展开: 1.压缩合并算法 2.代的机制 3.GC调用终结器 Garbage Collector . NET采用了和Java类似的方法由CLR(Common ...
- 基于Twemproxy的Redis集群搭建以及想法
基于Twemproxy的Redis集群方案(转) redis3.0 已经发布了几个月了,但是我这等菜鸟到网上还是没有找到很好的关于搭建redis3.0集群的文章,而且好像很多公司的redis版本还保持 ...
随机推荐
- Linux下go环境搭建
一:先从https://golang.google.cn/dl/下载,我这边下载的是go1.13.3.linux-amd64.tar.gz: 二:将压缩包解压后得到go目录,将go目录移动到/usr/ ...
- [转帖]Apache Kylin 概述
Apache Kylin 概述 https://www.cnblogs.com/xiaodf/p/11671095.html 1 Kylin是什么 今天,随着移动互联网.物联网.AI等技术的快速兴起, ...
- (二)spring初次遇见shiro
文章目录 集成 Spring 集成中的坑 shiroFilter 的工作原理 权限配置细节 集成 Spring pom.xml 添加shiro相关的依赖 我使用的版本是 ${version.shiro ...
- 华为模拟机试_C++题解
华为模拟机试 [编程|100分] a+b 题目描述 计算a+b的和 每行包含两个整数a和b 对于每行输入对应输出一行a和b的和 输入 1 5 输出 6 自解 #include<iostream& ...
- 【MIT 6.824 】分布式系统 课程笔记(二)Lecture 03 : GFS
Lecture 03 : GFS 一.一致性 1, 弱一致性 可能会读到旧数据 2, 强一致性 读到的数据都是最新的 3, 一致性比较 强一致性对于app的写方便, 但是性能差 弱一致性有良好的性能, ...
- Python3 - 随便说一下
Ⅰ编程语言基础知识 ⅡPython 语言概述 Ⅰ编程语言基础知识 编程语言总体分以为机器语言.汇编语言.高级语言: 机器语言:计算机硬件能够直接使用的编程语言,二进制的集合,属于低级语言. 汇编语言: ...
- 小贴士--java篇
1. java: “.”和“|”都是转义字符,必须得加"\\" 2.java :如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu = ...
- Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”) 目的: 当时在安装Qt时,有些组件暂时没用着,然后过一段时间后,需要用到某些该组件时,不用删掉重新再安装. 操作: Wind ...
- LOJ3049 [十二省联考2019] 字符串问题 【后缀自动机】【倍增】【拓扑排序】
题目分析: 建出后缀自动机,然后把A串用倍增定位到后缀自动机上,再把B串用倍增定位到后缀自动机上. SAM上每个点上的A串根据长度从小到大排序,建点,依次连边. 再对于SAM上面每个点,连到儿子的边, ...
- mysql授权单个表权限
mysql> create user haochengtest@'%' identified by 'haocheng.123'; Query OK, 0 rows affected (0.01 ...