参考:

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. MJExtension常用方法

    一.MJExtension第三方框架 我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据.等等,如果我们自己全部手动去创建模型并 ...

  2. redis String 相关命令

  3. 类 __init__的注意事项

    class Dog():  class类 后面的ClassName类名第一个字母一定要大写. def __init__(self,name,age):    注意init前后是英文格式下,前后都是两道 ...

  4. HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的

    JDK1.7用的链表散列结构,JDK1.8用的红黑树 在扩充HashMap的时候,JDK1.7的重新计算hash, JDK1.7只需要看看原来的hash值新增的那个bit是1还是0就好了,是0的话索引 ...

  5. 转 直接在浏览器运行Python代码

    到这个链接将代码下载到本地,然后打开cmd,使用python运行此文件,然后不要关闭窗口: https://raw.githubusercontent.com/michaelliao/learn-py ...

  6. mui框架页面每次加载操作

    最近在优化自己用mui开发的app,主要还是针对交互这块儿,这里简单给大家说一下问题点场景,就是我是通过动态添加底部tabBar的方法创建了一个底部可以切换的操作区域,代码如下: mui.init() ...

  7. delphi 文件存取方法与文件管理组件

    9.2  文件存取方法与文件管理组件 9.2.1  存取文件的类方法 Delphi在许多需要与文件打交道的类中定义了文件存取方法,使用这些方法可以非常方便地将类中的数据保存到文件中,或从文件中读取所需 ...

  8. 一次Spring Transactional嵌套事务使用不同的rollbackFor的分析

    起因: 项目期间由于一次异常回滚问题,发现自己在事务知识方面知识的遗漏,趁着这次机会,做了几次rollbackFor的测试. 测试:   现在有两个事务,事务oute包含事务Inner.事务A回滚规则 ...

  9. 60 cuda全局性能优化

    0 引言 cuda线程模型涉及grid的块划分和线程配置,直接影响到全局运算速度.根据文档<CUDA_C_Programming_Guide>,性能优化有三个方面的基本策略. (1)最大化 ...

  10. Python-爬虫-爬取知乎的标题和当页显示的文字

    # coding:utf-8 import requests from bs4 import BeautifulSoup quesNumStr = str(input("请输入搜索关键字:& ...