栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis学习笔记(一):redis介绍和使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis学习笔记(一):redis介绍和使用

目录

一、redis介绍

1、redis为什么会出现

(1)高性能

(2)高并发

2、redis介绍

3、redis特性

4、redis的线程模型

5、redis和其他方式的对比

5、redis的使用场景

二、redis安装


一、redis介绍

1、redis为什么会出现

        redis的出现主要从两个点来考虑:高性能和高并发。

(1)高性能

        在web应用中,会存在很多的数据,而这些数据是存储在数据库中的。用户经由前端页面进行操作时,需要读取数据库中的数据。例如前面文章里介绍的shiro,用户在页面操作时,如果每次我们都要从数据库中获取权限字符串然后比对权限,这样的就会使系统性能降低。因此,对于一些变化不大或不做变动的数据,在第一次读取以后,直接存储到缓存中,这样在以后的操作中直接从缓存中读取即可,从而提高系统的性能。

(2)高并发

        对于直接操作缓存来讲,其所能承受的请求数量是大于访问数据库的,因此,可以将数据库中的部分数据转移到缓存中,这样就可以直接到缓存而不经过数据库。

2、redis介绍

        Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。它支持诸如字符串、散列、列表、集合、有序集合等数据结构。与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。

3、redis特性
  • 性能极高:Redis读的速度是11W次/s,写的速度是81K次/s
  • 支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 丰富的数据类型:Redis不仅仅支持简单的key-value类型的数据,同时还提供Strings, Lists, Hashes, Sets 及 Ordered Sets 等数据结构的存储。
  • 支持数据的备份:即master-slave模式的数据备份。

4、redis的线程模型

        redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。  

  文件事件处理器的结构包含 4 个部分:  

  • 多个 socket
  • IO 多路复用程序
  • 文件事件分派器
  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

  多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。

5、redis和其他方式的对比

(1)为什么使用redis,而不使用map/guava做缓存

        缓存分为本地缓存和分布式缓存。对于Java而言,如果使用自带的map或者guava,实际上是本地缓存,其主要特点是轻量快速,其生命周期随JVM的销毁而结束,而在多实例的情况下,每个实例都需保存各自的缓存,缓存不具有一致性。

        使用redis或者memcached之类则是分布式缓存,在多实例下共用一份缓存数据,但其缺点是需要保持redis和memcached服务的高可用,在整个程序架构上是比较复杂的。

(2)redis和memcached的区别

  • redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。
  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。
  • 集群模式:memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的.
  • Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的多路 IO 复用模型。
对比参数redismemcached
类型支持内存、非关系型数据库支持内存、key-value键值对形式
数据存储类型String、List、Set、Hash、ZSet文本型、二进制类型
查询类型批量操作、事务支持、每个类型不同的CRUDCRUD、少量的其他命令
附加功能发布/订阅模式、主从分区、序列化支持、脚本支持(Lua脚本)多线程服务支持
网络IO模型单进程模式多线程、非阻塞IO模式
事件库自封装简易事件库AeEvent贵族血统的LibEvent事件库
持久化支持RDB、AOF不支持

5、redis的使用场景
  • 最新N个数据:通过list实现按自然时间排序的数据
  • 排行榜,TOP N:利用zset(有序集合)
  • 时效性的数据,比如手机验证码:Expire(过期)
  • 计数器,秒杀:原子性,自增方法incr、decr
  • 去除大量数据中的重复数据:利用set集合
  • 构建队列:利用list集合
  • 发布订阅消息系统:pub/sub模式

二、redis安装

Ubuntu下redis的安装:sudo apt-get install redis-server

安装测试:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号