参考:

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. shell实现批量创建交叉编译工具软链接

    在学习嵌入式过程中,常常用到交叉编译工具,而原本的交叉工具链比较长,不利于记忆以及使用, 解压后的交叉编译工具链如下图所示 为了更好的使用交叉编译工具与其他开发者保持一致,经常需要用到软链接. NAM ...

  2. WSGI——python-Web框架基础

    1. 简介 WSGI ​ WSGI:web服务器网关接口,这是python中定义的一个网关协议,规定了Web Server如何跟应用程序交互.可以理解为一个web应用的容器,通过它可以启动应用,进而提 ...

  3. PHP获取远程客户端真实IP的办法!

    (1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 (2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 (3).HTTP_CLIENT_IP:客户端的i ...

  4. bzoj1002题解

    [题意分析] 给你一张特殊的,被称为“轮状基”的无向图,求其生成树个数. [解题思路] 引理: 基尔霍夫矩阵: 基尔霍夫矩阵=度数矩阵-邻接矩阵(邻接矩阵权=两点连边数) Matrix-Tree定理: ...

  5. 求最长的任意两元素差不超过M的子段——双指针+单调队列hdu4123

    换根dp的部分比较容易,难点在于求求最长的任意两元素差不超过M的子段 首先会想到双指针维护(尺取法),如果p1,p2间的max-min>M,那么p1向右移动,直到p1,p2间的max-min&g ...

  6. NX二次开发-UFUN移动工程图视图UF_DRAW_move_view

    #include <uf.h> #include <uf_draw.h> #include <uf_drf.h> #include <uf_obj.h> ...

  7. [JZOJ 5818] 做运动

    题意:带温度最短路. 思路: 我们将温度从小到大的将边加入,用并查集维护连通性. 如果一旦联通那么跑一遍\(spfa\)就可以得到答案. 复杂度\(O(m log m)\) #include < ...

  8. 2019/11/12 CSP模拟赛&&考前小总结

    写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些 ...

  9. 在WinDBG中查看内存的命令

    当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态. d命令 ...

  10. [kuangbin带你飞]专题一 简单搜索 - L - Oil Deposits

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...