参考:

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. Effective C++之条款2:尽量以const enum inline替换 #define

    本文的标题也可以改成“用编译器替换预处理器”: const double AspectRatio = 1.653; //最好使用上述代码替换下述代码: #define ASPECT_RATIO 1.6 ...

  2. [翻译]windows下 连接到 bitnami的phpmyadmin

    bitnami 因为安全考虑,只能 localhost 访问 phpmyadmin 为了能通过SSH 隧道访问 phpMyAdmin,你需要一个ssh 客户端.参考文章介绍使用中选择使用 PuTTY, ...

  3. Andriod Unity 调用android函数

    //首先这是一个前沿 //我看了多的资料,还看了近半个小时的 android activity 的讲解 终于打出了apk //接下来开始 //一步一步的跟着我走 1.创建一个android项目或者一个 ...

  4. 理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic

    TCP/IP:网络宽带,传输数据的基础协议,所有得数据要在网络上传输都是基于TCP/IP协议(或UDP),才能送达到指定的目的地(IP,服务器硬件地址). SOCKET:SOCKET只是面对编程人员的 ...

  5. flume的安装和使用

    1.下载 [linyouyi@hadoop01 software]$ wget https://mirrors.aliyun.com/apache/flume/1.9.0/apache-flume-1 ...

  6. string反向找位置,分割字符串(只取文件夹路径)

    1 #include <uf.h> 2 #include <uf_part.h> 3 #include <atlstr.h> 4 #include <iost ...

  7. (转)Java NIO框架Mina、Netty、Grizzly介绍与对比

    转:http://blog.csdn.net/cankykong1/article/details/19937027 Mina: Mina(Multipurpose Infrastructure fo ...

  8. nagios监控实用教程

    nagios监控实用教程 Nagios作为开源网络监视工具,它不但可以有效的监控内存.流量.数据库使用情况.它还可以Windows.Linux主机状态.本专题收录了有关Nagios监控相关文章,供大家 ...

  9. CentOS yum 安装 g++ 4.7.2 & c++11

    From this answer to "Install gcc 4.7 on CentOS [6.x]", the easiest way to get g++ 4.7, and ...

  10. java.sql.SQLException: ORA-12704: 字符集不匹配

    INFO:HibernateSimpleDao----queryForListWithSql:SELECT site_id as id ,MAX(case attr_name when 'siteNa ...