参考:

https://juejin.im/post/5b4dd82ee51d451925629622?utm_source=gold_browser_extension

https://www.cnblogs.com/dongyongjing/archive/2007/06/29/800448.html

http://www.runoob.com/redis/redis-intro.html

https://www.cnblogs.com/firejava/p/6256788.html

一 缓存

概述

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。

(提速和优化)

原理

将数据写入/读取速度更快的存储(设备);

将数据缓存到离应用最近的位置;

将数据缓存到离用户最近的位置。

 

分类:

从部署角度:

CDN缓存:(主要解决静态文件)

反向代理缓存

分布式Cache :主要指缓存用户经常访问数据的缓存,数据源为数据库,常用Memcache,Redis

本地应用缓存

从缓存位置:

客户端缓存:浏览器缓存

网关或代理服务器缓存

服务端缓存:页面缓存

数据缓存(ehcache、memcache)

数据库缓存

 

媒介:

常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等;

缓存的内容:文件,数据,对象;

缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式)

二 Redis(REmote Dlctionary Server)

概述:

内存高速缓存数据库;

可基于内存亦可持久化;

数据模型:key-value;

value(值)可以是String,Hash,List, 集合(sets) 和 有序集合(sorted sets)

特点:

支持持久化(RDB和AOF);

高性能;

丰富的数据类型;

所有操作都是原子性(要么成功执行要么完全不执行);

应用场景:

缓存(数据查询、短连接、新闻内容、商品内容等等);

分布式集群架构中的session分离;

聊天室的在线好友列表;

任务队列;

应用排行榜;

网站访问统计;

数据过期处理(可以精确到毫秒)

下载安装

(这个就不说了)

数据类型:

类型

简介

特性

场景

String

二进制安全

可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M

---

Hash

键值对集合,即编程语言中的Map类型

适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)

存储、读取、修改用户属性

List

链表(双向链表)

增删快,提供了操作某一段元素的API

1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列

Set

哈希表实现,元素不重复

1,添加、删除,查找的复杂度都是O(1) 2,为集合提供了求交集、并集、差集等操作

1,共同好友 2,利用唯一性,统计访问网站的所有独立ip 3,好用推荐时,根据tag求交集,大于某个阈值就可以推荐

Sorted Set

将Set中的元素增加一个权重参数score,元素按score有序排列

数据插入集合时,已经进行天然排序

1,排行榜 2,带权重的消息队列

1.String

是redis最基本的类型,可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512MB。

常用命令:set,get,decr,incr,mget。

例:-> SET key "value"

-> GET key   ------value

2.Hash

是一个键值对集合,适合用于存储对象。

常用命令:hget,hset,hgetall 。

例:-> HMSET myhash field1 "value1" field2 "value2"

-> HGET myhash field1    ------value1

-> HGET myhash field2    ------value2

ps:HGET 设置了两个field=>对,HGET 获取field对应的value。

每个 hash 可以存储 2^32 -1 键值对。

3. List

列表是简单的字符串列表,按照插入顺序排序。可以在头部或者尾部添加元素。

常用命令:lpush,rpush,lpop,rpop,lrange。

4.Set

集合是string类型的无序集合。

集合是通过Hash表实现的,所以添加,删除,查找的复杂度都是O(1)。

常用命令:sadd,spop,smembers,sunion。

5.Sorted set

有序集合(提供score)

常用命令:zadd、zrange、zrem、zcard。

其他

持久化的两种方式:(RDB和AOF)

RDB 在redis.conf配置文件里配置持久化触发器;

AOF指的是redis没增加一条记录都会保存到持久化文件中(保存的是这条记录的生成命令)

三 补充概念:

关系型数据库:Mysql、Oracle、SqlServer等,数据存储在部署数据库得机器得硬盘中。

(高并发处理、负载均衡和分布式数据库?)

优势:复杂查询

劣势:慢

非关系型数据库(Nosql)

高并发、高可用、高可扩展,大数据存储等一系列问题的数据库解决方案,存储于硬盘之中。

分类:

1.键值存储数据库:Redis ...

典型应用:内容缓存,主要用于处理大量数据的高访问负载。

数据模型:一系列键值对

优势:快速查询

劣势:存储的数据缺少结构化

...

...

...

(其他数据库就不介绍了,可以参考下面这个网址)

https://www.cnblogs.com/bldly1989/p/6721758.html

初步了解Redis的更多相关文章

  1. 初步使用redis

    1.导入jar包 2.新建类: public class JedisAdapter { private static final Logger logger = LoggerFactory.getLo ...

  2. 07.初步学习redis哨兵机制

    [ ] 一.哨兵(sentinal)的介绍 哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个re ...

  3. C# Redis实战

    转自  :http://blog.csdn.net/qiujialongjjj/article/details/16945569 一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持 ...

  4. redis入门指南学习笔记

    redis的常见命令 set key hello get key incr num get num set foo lorem incr foo hset car price 500 hset car ...

  5. 基于redis的延迟消息队列设计

    需求背景 用户下订单成功之后隔20分钟给用户发送上门服务通知短信 订单完成一个小时之后通知用户对上门服务进行评价 业务执行失败之后隔10分钟重试一次 类似的场景比较多 简单的处理方式就是使用定时任务 ...

  6. redis 安装实战(10步完成安装)

    1 下载zip :https://redis.io/download   ---->redis-4.0.6 2 上传:利用wcp 上传到/usr/local/soft/ 3 解压:tar -zv ...

  7. C# Redis实战(一)

    一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库.Redis的出现,很大程度补偿了memcached这类key/va ...

  8. 剑指架构师系列-Redis集群部署

    初步搭建Redis集群 克隆已经安装Redis的虚拟机,我们使用这两个虚拟机中的Redis来搭建集群. master:192.168.2.129 端口:7001 slave:192.168.2.132 ...

  9. Redis 5.0.3集群部署

    参考文章 https://blog.csdn.net/yyTomson/article/details/85783753 https://www.cnblogs.com/zy-303/p/102731 ...

随机推荐

  1. SetupFactory 许可协议设置

    我用的SetupFactory版本是9.1.0 没有汉化 一开始自己也不知道 百度发现有人在问同样的问题但是没解决 自己找了一会偶然发现 界面左侧 Screens->Before Install ...

  2. GitHub排名TOP30的机器学习开源项目

    对于机器学习者来说,阅读开源代码并基于代码构建自己的项目,是一个非常有效的学习方法.看看以下这些Github上平均star为3558的开源项目,你错了哪些? 1. FastText:快速文本表示和文本 ...

  3. Android开发 MediaPlayer入门_播放本地视频

    前言 MediaPlayer,可以播放视频/音频,并且它支持本地和网络文件的播放.本片博客作为入门教程,先以最通俗的方式解释播放文件本地视频.(如果你嫌MediaPlayer还是太麻烦可以试试选择Vi ...

  4. C#/.NET 实现的多屏联动,多屏共享,显示到指定屏幕上

    假设我现在有4个屏幕,希望实现主屏幕在操作的时候,其他3块屏幕可以实时联动,并且延迟在1s以内. 正常情况下,我们可以借助于各个远程软件实现效果,但是有时候会显得笨重麻烦,假如只有一台服务器呢?? S ...

  5. Servlet 上传图片

    目录 Servlet 上传图片 预备 需求包 pom 前端代码 Servlet 上传图片 预备 需求包 commons-fileupload -用于上传 jstl -用于jsp页面遍历 servlet ...

  6. on windows in superset sql lab error "module object has no attribute sigalrm"

    改下  utils.py   文件 It works after doing the following change (sorry for the massed up alignment, prob ...

  7. 【JZOJ3294】【BZOJ4417】【luoguP3990】超级跳马

    description analysis 矩阵乘法好题 最朴素的\(10pts\)的\(f[i][j]\)容易\(DP\),但是是\(O(nm^2)\)的复杂度 于是把\(10\)分的\(DP\)写出 ...

  8. Eureka的表兄弟Zookeeper理论基础

    Eureka的表兄弟Zookeeper 简单介绍 Zookeeper是一个开源的分布式应用程序协调服务器,主要功能包括配置维护,域名服务,分布式同步,集群管理等 主要功能简介 一.配置维护 分布式系统 ...

  9. Go 关系运算符

    Go 关系运算符 package main import "fmt" func main() { var a int = 21 var b int = 10 if( a == b ...

  10. 【安装】Mac rabbitMQ

    安装 brew install rabbitmq 目录  cd /usr/local/Cellar/rabbitmq/3.7.4/sbin 插件 sudo ./rabbitmq-plugins ena ...