初步了解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
本地应用缓存
从缓存位置:
客户端缓存:浏览器缓存
网关或代理服务器缓存
服务端缓存:页面缓存
数据缓存(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的更多相关文章
- 初步使用redis
1.导入jar包 2.新建类: public class JedisAdapter { private static final Logger logger = LoggerFactory.getLo ...
- 07.初步学习redis哨兵机制
[ ] 一.哨兵(sentinal)的介绍 哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个re ...
- C# Redis实战
转自 :http://blog.csdn.net/qiujialongjjj/article/details/16945569 一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持 ...
- redis入门指南学习笔记
redis的常见命令 set key hello get key incr num get num set foo lorem incr foo hset car price 500 hset car ...
- 基于redis的延迟消息队列设计
需求背景 用户下订单成功之后隔20分钟给用户发送上门服务通知短信 订单完成一个小时之后通知用户对上门服务进行评价 业务执行失败之后隔10分钟重试一次 类似的场景比较多 简单的处理方式就是使用定时任务 ...
- redis 安装实战(10步完成安装)
1 下载zip :https://redis.io/download ---->redis-4.0.6 2 上传:利用wcp 上传到/usr/local/soft/ 3 解压:tar -zv ...
- C# Redis实战(一)
一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库.Redis的出现,很大程度补偿了memcached这类key/va ...
- 剑指架构师系列-Redis集群部署
初步搭建Redis集群 克隆已经安装Redis的虚拟机,我们使用这两个虚拟机中的Redis来搭建集群. master:192.168.2.129 端口:7001 slave:192.168.2.132 ...
- Redis 5.0.3集群部署
参考文章 https://blog.csdn.net/yyTomson/article/details/85783753 https://www.cnblogs.com/zy-303/p/102731 ...
随机推荐
- shell实现批量创建交叉编译工具软链接
在学习嵌入式过程中,常常用到交叉编译工具,而原本的交叉工具链比较长,不利于记忆以及使用, 解压后的交叉编译工具链如下图所示 为了更好的使用交叉编译工具与其他开发者保持一致,经常需要用到软链接. NAM ...
- WSGI——python-Web框架基础
1. 简介 WSGI WSGI:web服务器网关接口,这是python中定义的一个网关协议,规定了Web Server如何跟应用程序交互.可以理解为一个web应用的容器,通过它可以启动应用,进而提 ...
- PHP获取远程客户端真实IP的办法!
(1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 (2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 (3).HTTP_CLIENT_IP:客户端的i ...
- bzoj1002题解
[题意分析] 给你一张特殊的,被称为“轮状基”的无向图,求其生成树个数. [解题思路] 引理: 基尔霍夫矩阵: 基尔霍夫矩阵=度数矩阵-邻接矩阵(邻接矩阵权=两点连边数) Matrix-Tree定理: ...
- 求最长的任意两元素差不超过M的子段——双指针+单调队列hdu4123
换根dp的部分比较容易,难点在于求求最长的任意两元素差不超过M的子段 首先会想到双指针维护(尺取法),如果p1,p2间的max-min>M,那么p1向右移动,直到p1,p2间的max-min&g ...
- NX二次开发-UFUN移动工程图视图UF_DRAW_move_view
#include <uf.h> #include <uf_draw.h> #include <uf_drf.h> #include <uf_obj.h> ...
- [JZOJ 5818] 做运动
题意:带温度最短路. 思路: 我们将温度从小到大的将边加入,用并查集维护连通性. 如果一旦联通那么跑一遍\(spfa\)就可以得到答案. 复杂度\(O(m log m)\) #include < ...
- 2019/11/12 CSP模拟赛&&考前小总结
写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些 ...
- 在WinDBG中查看内存的命令
当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态. d命令 ...
- [kuangbin带你飞]专题一 简单搜索 - L - Oil Deposits
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...