目录

  • 一、Redis缓存框架基本介绍
  • 二、Redis的应用场景
  • 三、Redis单线程模型
  • 四、linux环境安装Redis
  • 五、环境核心配置
  • 1. 将Redis设置为后台启动
  • 2. 设置Redis账号密码
  • 3. 设置Reids允许ip访问
  • 六、Redis默认的情况下分为16个库
  • 七、Redis数据结构
  • 1. String类型
  • 2. Hsh类型
  • 3. List类型
  • 4. Set类型
  • 5. Sorted-Sets


一、Redis缓存框架基本介绍

Redis 是完全开源免费的,是一个高性能的key-value数据库,目前市面上主流的数据库
Redis、Memcache、Tair(淘宝自研发)

Redis的官网:https://redis.io/

二、Redis的应用场景

1.Token令牌的生成
2.短信验证码Code
3.缓存查询数据
4.网页计数器
5.分布式锁
6.延迟操作

三、Redis单线程模型

首先Redis官方是没有windows版本的,只有redis版本

Redis的底层采用Nio中的多路IO复用的机制,能够非常好的支持这样的并发,从而保证线程安全问题;
Redis单线程,也就是底层采用一个线程维护多个不同的客户端io操作。
但是Nio在不同的操作系统上实现的方式有所不同,在我们windows操作系统使用select实现轮训时间复杂度是为o(n),而且还存在空轮训的情况,效率非常低, 其次是默认对我们轮训的数据有一定限制,所以支持上万的tcp连接是非常难。

所以在linux操作系统采用epoll实现事件驱动回调,不会存在空轮训的情况,只对活跃的 socket连接实现主动回调这样在性能上有大大的提升,所以时间复杂度是为o(1)

注意:windows操作系统是没有epoll,只有linux系统才有epollRedis底层采用nio epoll实现

四、linux环境安装Redis

1.上传Redis的安装包

redis-5.0.6.tar.gz

2.解压我们的Redis安装包

tar -zxvf redis-5.0.6.tar.gz

3.创建rediss目录

mkdir /usr/redis

4.预编译一下rediss安装文件

make install PREFIX=/usr/redis

5.启动Redis

cd /usr/redis/bin     ./redis-server

五、环境核心配置

1. 将Redis设置为后台启动

  1. 将配置文件复制到启动目录中
cp /usr/redis-5.0.6/redis.conf    /usr/redis/bin

redis 注册码 redis注册中心原理_redis

  1. 进入到/usr/redis/bin目录,在redis.conf中设置daemonize yes
vi redis.conf

redis 注册码 redis注册中心原理_redis_02

  1. 重新启动Redis
./redis-server ./redis.conf

redis 注册码 redis注册中心原理_环境搭建_03

  1. 查看进程是否启动成功
ps aux | grep 'redis'

redis 注册码 redis注册中心原理_环境搭建_04

2. 设置Redis账号密码

  1. 在redis.conf中搜索:# requirepass foobared ,并修改为requirepass root(root为修改后的密码)
  2. 重启redis
  3. 测试密码是否添加成功

3. 设置Reids允许ip访问

redis默认只允许通过127.0.0.1来进行访问

  1. 在redis.conf中,注释掉bind 127.0.0.1
  2. 在redis.conf中设置protected-mode no ,允许外界访问
  3. 关闭防火墙
systemctl stop firewalld
  1. 重启redis
  2. 用Redis Desktop Manager测试链接(Redis Desktop Manager v0.8.8.384点击下载)

六、Redis默认的情况下分为16个库

0-15

redis 注册码 redis注册中心原理_数据结构_05

七、Redis数据结构

String类型、Hsh类型、List类型、Set类型 、Sorted-Sets

1. String类型

String是redis最基本的类型,一个key对应一个value,string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象, String类型是Redis最基本的数据类型,一个键最大能存储512MB。

set name demo
get name

redis 注册码 redis注册中心原理_redis_06

2. Hsh类型

我们可以将Redis中的Hash类型看成具有<key,<key1,value>>,其中同一个key可以有多个不同key值的<key1,value>,所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。

HMSET demo  zhangsan 18
HGETALL demo

redis 注册码 redis注册中心原理_环境搭建_07

3. List类型

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

LPUSH demolist xiaowang xiaochao xiaodan
LRANGE demolist 0 10

redis 注册码 redis注册中心原理_redis_08

4. Set类型

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

SADD demoset xiaowang xiaowang01 xiaowang02
SMEMBERS  demoset

redis 注册码 redis注册中心原理_环境搭建_09

5. Sorted-Sets

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

ZADD demosets 1 demo01
ZADD demosets 1 demo01
ZADD demosets 1 demo02
ZRANGE demosets 0 10 WITHSCORES

redis 注册码 redis注册中心原理_redis 注册码_10