Redis-介绍

Redis

介绍

Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库(非关系型数据库)。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。目前市面上主流的数据库Redis、Memcache、Tair(淘宝自研发)。

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

与关系型数据库的区别:
内存数据库(nosql数据库)、mysql、sqlserver
关系数据库存放在硬盘中 查询实现io操作
非关系数据库 Redis 持久化机制 淘汰策略
Jvm内置缓存框架 ECACH os cache

应用场景

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

Redis单线线程模型

首先Redis官方是没有windows版本的,只有redis版本。
Redis的底层采用Nio中的多路IO复用的机制,能够非常好的支持这样的并发,从而保证线程安全问题;

Redis单线程,也就是底层采用一个线程维护多个不同的客户端io操作。但是Nio在不同的操作系统上实现的方式有所不同,在我们windows操作系统使用select实现轮训时间复杂度是为o(n),而且还存在空轮训的情况,效率非常低, 其次是默认对我们轮训的数据有一定限制,所以支持上万的tcp连接是非常难。所以在linux操作系统采用epoll实现事件驱动回调,不会存在空轮训的情况,只对活跃的 socket连接实现主动回调这样在性能上有大大的提升,所以时间复杂度是为o(1)。

注意:windows操作系统是没有epoll,只有linux系统才有epoll

所以为什么nginx、redis都能够非常高支持高并发,最终都是linux中的IO多路复用机制epoll。
Redis底层采用nio epoll实现

Linux环境下安装Redis

windows系统安装redis较为简单,解压启动即可,可以修改配置文件来配置密码、远程连接等等。
下载地址:https://redis.io/download/

第一步、上传Redis的安装包到Linux系统
redis-6.2.7.tar.gz
第二步、解压我们的Redis安装包,解压到 /opt/redis/redisCluster/redis-6.2.7目录下
tar -zxvf redis-redis-6.2.7.tar.gz
第三步、进入到解压的目录下:执行命令make
第四步、进入src目录:cd src/
第五步、执行安装命令:make install
启动Redis

cd /usr/redis/bin     

./redis-server  //前台启动

环境核心配置

将Redis设置为后台启动

#复制配置文件
cp /usr/redis-6.2.7/redis.conf    /usr/redis/bin
#修改配置文件 修改内容:daemonize yes
vim  redis.conf  

#重启启动Redis
./redis-server ./redis.conf
#查看redis 进程
ps aux | grep 'redis'

设置Redis账号密码,修改配置文件,requirepass 的值就是密码的配置
requirepass 123456

设置Reids允许ip访问,修改配置文件
注释掉bind 127.0.0.1
protected-mode no ###允许外界访问

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

Redis数据结构

String类型、Hsh类型、List类型、Set类型 、Sorted-Sets(有序set)

String类型

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

Hash类型

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

List类型

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

Redis 集合(Set)

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

Redis 有序集合(sorted set)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2 的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值