• 初步了解Redis


    参考:

    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

    本地应用缓存

    从缓存位置:

    客户端缓存:浏览器缓存

                网关或代理服务器缓存

    服务端缓存:页面缓存

                数据缓存(ehcachememcache

                数据库缓存

     

    媒介:

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

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

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

      

    二 Redis(REmote Dlctionary Server)

    概述:

    内存高速缓存数据库;

    可基于内存亦可持久化;

    数据模型:key-value

    value()可以是StringHashList, 集合(sets) 和 有序集合(sorted sets)

    特点:

    支持持久化(RDBAOF);

    高性能;

    丰富的数据类型;

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

    应用场景:

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

    分布式集群架构中的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

    常用命令:setgetdecrincrmget

    例:-> SET key "value"

        -> GET key   ------value

    2.Hash

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

    常用命令:hgethsethgetall

    例:-> 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

    常用命令:zaddzrangezremzcard

    其他

    持久化的两种方式:(RDBAOF

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

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

    三 补充概念:

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

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

    优势:复杂查询

    劣势:

    非关系型数据库(Nosql

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

    分类:

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

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

    数据模型:一系列键值对

    优势:快速查询

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

    ...

    ...

    ...

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

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

  • 相关阅读:
    git rebase 还是 merge的使用场景最通俗的解释
    漏洞复现:Struts2 远程代码执行漏洞(S2-033)
    linux临时网络配置
    漏洞复现:Struts2 S2-032 漏洞环境
    XXE攻击学习
    启用了不安全的HTTP方法【转】
    HTTP参数污染【转】
    逻辑漏洞挖掘方式
    大漏洞时代下的僵尸网络追踪-笔记
    markdown入门杂记
  • 原文地址:https://www.cnblogs.com/rulasann/p/9414658.html
Copyright © 2020-2023  润新知