Redis个人心得笔记(一)
目录
https://blog.youkuaiyun.com/LiuY521/article/details/90667033
一.redis简介
一.redis是什么
- 非关系型数据库nosql,key-value存储,可持久化,支持分布式,内存
- Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。
- Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
- 开源的 底层是C语言写的 http://www.redis.io Redis官网
二.redis特点
- Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。
- Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。
- Redis支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是Redis的一大亮点。
二.Redis应用场景
众多语言都支持Redis,因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。(存储内存中)
拿大型网站来举个例子(天猫,京东),比如a网站首页一天有100万人访问,其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。上面已经说过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
三.使用Redis有哪些好处?
-
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
-
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
-
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
-
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
四.redis和其他缓存数据库的区别优势
Memcache简介
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用 非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。
Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。
Memcached简介
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
Memcached特点:
- 在内存中以键/值对存储,性能好。
- 协议简单(基于文本行),功能强大。
- 基于libevent的事件处理,无阻塞通信,对内存读写速度非常快。
- 基于客户端的分布式,服务端多个Memcached之间不互相通信。
- 服务端以守护进程运行,客户端可以用任何语言来编写。
redis相比memcached有哪些优势?
-
(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 (五种)
-
(2) redis的速度比memcached快很多
-
(3) redis可以持久化其数据 save存储硬盘中
Memcache与Redis的区别都有哪些?
1)、存储方式
Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。(不可持久化,无法处理容灾,无法处理雪崩)
Redis有部份存在硬盘上,这样能保证数据的持久性。save可以持久化存储到硬盘中
2)、数据支持类型
Memcache对数据类型支持相对简单。
Redis有复杂的数据类型。string、list、set、zset(sorted set)、hash
3)、使用底层模型不同
它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。
Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4)value大小
redis最大可以达到1GB,而memcache只有1MB
5)性能
Redis单例单线程,非阻塞 Memcache单进程多线程;有资源的争抢
五.redis的持久化
可持久化: redis是主要将数据存储在内存中(特点:快,可靠性不高),为了防止内存数据宕机丢失,创建的持久化功能,可以根据需求,将内存数据保存在磁盘中,一旦故障,可以实现数据的恢复功能.
支持分布式:redis服务端是单例单线程的,利用线程非阻塞原理实现高吞吐量(1秒钟万条数据的读写操作).单个的redis节点(启动的一个server进程)不足以实现某个服务器的cpu性能,redis都是以集群节点的结构存在的(分布式的,高可用的结构)
内存: 主要处理数据的介质就是内存
redis配置文件被分成了几大块区域,它们分别是:
- 1.通用(general)
- 2.快照(snapshotting)
- 3.复制(replication)
- 4.安全(security)
- 5.限制(limits)
- 6.追加模式(append only mode)
- 7.LUA脚本(lua scripting)
- 8.慢日志(slow log)
- 9.事件通知(event notification)
下篇博客实战笔记指令
https://blog.youkuaiyun.com/LiuY521/article/details/90667033
参考文档
https://blog.youkuaiyun.com/yuzsmc/article/details/81979262
https://blog.youkuaiyun.com/lbb17745169396/article/details/79752992