Redis环境搭建与数据结构原理

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 Redis环境搭建与数据结构原理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、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系统才有epoll
Redis底层采用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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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数据结构

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

1. String类型

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

set name demo
get name

在这里插入图片描述

2. Hsh类型

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

HMSET demo  zhangsan 18
HGETALL demo

在这里插入图片描述

3. List类型

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

LPUSH demolist xiaowang xiaochao xiaodan
LRANGE demolist 0 10

在这里插入图片描述

4. Set类型

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

SADD demoset xiaowang xiaowang01 xiaowang02
SMEMBERS  demoset 

在这里插入图片描述

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

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131247.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!