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

目录

一、redis介绍

1、redis为什么会出现

(1)高性能

(2)高并发

2、redis介绍

3、redis特性

4、redis的线程模型

5、redis和其他方式的对比

5、redis的使用场景

二、redis安装

1、apt安装

2、wget 安装



一、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安装

1、apt安装

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

安装测试:

2、wget 安装

(1)获取redis资源

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

(2)解压 

tar -zxvf redis-4.0.8.tar.gz 

(3)安装

cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis

(4)移动配置文件到安装目录下

cd /usr/local
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
cd /usr/local/redis-4.0.2
mv ./redis.conf /usr/local/redis/etc

(5)配置redis为后台启动

vi /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes

(6)开启redis desktop manager远程连接的配置

将第70行的bind注释,第90行将protected-mode改为no 

 (7)取消注释,设置密码

测试:

启动redis-server

 启动redis-cli

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值