【Redis入门到精通一】什么是Redis?

目录

Redis

[1. Redis的背景知识](#1. Redis的背景知识)

2.Redis特性

3.Redis的使用场景

4.Ubuntu上安装配置Redis


Redis

Redis在当今编程技术中的地位可以说非常重要,大多数互联网公司内部都在使用这个技术,熟练使用Redis已经成为开发人员的一个必备技能。本章将带领读者进⼊ Redis 的世界,了解它的前世今⽣、众多特性、典型应⽤场景、安装配置等。

1. Redis的背景知识

Redis 是⼀种基于键值对(key-value)的 NoSQL 数据库,与很多键值对数据库不同的是,Redis中的值可以是由 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此 Redis可以满⾜很多的应⽤场景,⽽且因为 Redis 会将所有数据都存放再内存中,所以它的读写性能⾮常惊⼈。不仅如此,Redis 还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的时候,内存中的数据不会"丢失"。除了上述功能以外,Redis 还提供了键过期、发布订阅、事务、流⽔线、Lua 脚本等附加功能。
2008 年,Redis 的作者 Salvatore Sanfilippo 在开发⼀个叫 LLOOGG 的⽹站时,需要实现⼀个⾼性能的队列功能,最开始是使⽤ MySQL 来实现的,但后来发现⽆论怎么优化 SQL 语句等都不能使⽹站的性能提⾼上去,再加上⾃⼰囊中羞涩,于是他决定⾃⼰做⼀个专属于 LLOOGG 的数据库,这个就是 Redis 的前⾝。后来,Salvatore Sanfilippo 将 Redis 1.0 的源码发布到 Github 上,可能连他⾃⼰都没想到,Redis 后来如此受欢迎。
从 Redis 的官⽅公司统计来看,有很多重量级的公司都在使⽤Redis,如国外的 Twitter,Instagram、Stack Overflow、Github 等,国内就更多了,如果单单从体量来统计,新浪微博可以说是全球最⼤的 Redis 使⽤者,除了新浪微博,还有像阿⾥巴巴、腾讯、搜狐、优酷⼟⾖、美团、⼩⽶、唯品会等公司都是 Redis 的使⽤者。除此之外,许多开源技术像 ELK 等已经把 Redis 作为它们组件中的重要⼀环,⽽且 Redis 还提供了模块系统让第三⽅⼈员实现功能扩展,让 Redis 发挥出更⼤的威⼒。

2.Redis特性

(1)速度快
官⽅给出的数字是读写性能可以达到 10 万 / 秒,为什么Redis能保证速度这么快呢?

  1. Redis 的所有数据都是存放在内存中的,把数据放在内存中是 Redis 速度快的最主要原因。
  2. Redis 是⽤ C 语⾔实现的,⼀般来说 C 语⾔实现的程序 "距离" 操作系统更近,执⾏速度相对会更快。
  3. Redis 使⽤了单线程,预防了多线程可能产⽣的竞争问题。
  4. 作者对于 Redis 源代码可以说是精打细磨,曾经有⼈评价 Redis 是少有的集性能和优雅于⼀⾝的开源代码。

(2)基于键值对的数据结构服务器
Redis 的全称是 REmote Dictionary Server,与其他语言中键值对功能不同的是Redis 中的值不仅可以是字符串,⽽且还可以是具体的数据结构,Redis官方文档提供了十种数据结构,常见的有字符串,哈希,列表,集合,有序集合等。
(3)丰富的功能

  • 提供了键过期功能,可以⽤来实现缓存。
  • 提供了发布订阅功能,可以⽤来实现消息系统。
  • ⽀持 Lua 脚本功能,可以利⽤ Lua 创造出新的 Redis 命令。
  • 提供了简单的事务功能,能在⼀定程度上保证事务特性。
  • 提供了流⽔线(Pipeline)功能,这样客⼾端能将⼀批命令⼀次性传到 Redis,减少了⽹络的开销。

(4)简单稳定

Redis简单稳定有三方面的原因:

  1. Redis的源码很少,可以被大多数资深的程序员给学透。
  2. Redis使用单线程模型,服务器模型简单,不会出现线程安全问题。
  3. 不需要调用操作系统中的类库,Redis自己实现了相关功能。

(5) 支持C、C++、Java、PHP、Python、NodeJS在内的多种客户端语言。

(6)可以实现Redis内存到硬盘的持久化

(7)提供了复制功能,支持主从复制

(8)支持高可用和分布式

3.Redis的使用场景

1.缓存(Cache)
缓存机制⼏乎在所有⼤型⽹站都有使⽤,合理地使⽤缓存不仅可以加速数据的访问速度,⽽且能够有效地降低后端数据源的压⼒。Redis 提供了键值过期时间设置,并且也提供了灵活控制最⼤内存和内存溢出后的淘汰策略。可以这么说,⼀个合理的缓存设计能够为⼀个⽹站的稳定保驾护航。
2.排⾏榜系统
排⾏榜系统⼏乎存在于所有的⽹站,例如按照热度排名的排⾏榜,按照发布时间的排⾏榜,按照各种复杂维度计算出的排⾏榜,Redis 提供了列表和有序集合的结构,合理地使⽤这些数据结构可以很⽅便地构建各种排⾏榜系统。
3.计数器应⽤
计数器在⽹站中的作⽤⾄关重要,例如视频⽹站有播放数、电商⽹站有浏览数,为了保证数据的实时性,每⼀次播放和浏览都要做加 1 的操作,如果并发量很⼤对于传统关系型数据的性能是⼀种挑战。Redis 天然⽀持计数功能⽽且计数的性能也⾮常好,可以说是计数器系统的重要选择。
4.社交⽹络
赞 / 踩、粉丝、共同好友 / 喜好、推送、下拉刷新等是社交⽹站的必备功能,由于社交⽹站访问量通常⽐较⼤,⽽且传统的关系型数据不太合适保存这种类型的数据,Redis 提供的数据结构可以相对⽐较容易地实现这些功能。
5.消息队列系统
消息队列系统可以说是⼀个⼤型⽹站的必备基础组件,因为其具有业务解耦、⾮实时业务削峰等特性。Redis 提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列⽐还不够⾜够强⼤,但是对于⼀般的消息队列功能基本可以满⾜。

4.Ubuntu上安装配置Redis

Redis官方其实是没有提供Windows版本的,微软维护了一个Windows版本的Redis分支。

Ubuntu上安装配置Redis大概分为六个步骤:

  1. 先使用su命令切换为root用户
  2. 使用apt命令搜索Redis相关软件包 apt search redis
  3. 使用apt命令安装redis apt install redis
  4. 手动修改配置文件,(更改ip为0.0.0.0,默认为127.0.0.1;并关闭保护模式 protected -mode改为no)保证可以跨主机访问,配置文件所在路径(/etc/redis/redis.conf)
  5. 重新启动服务器 service redis-server restart
  6. 使用redis自带的客户端来连接服务器 redis-cli连接 ctrl + d退出redis客户端
相关推荐
IvorySQL35 分钟前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·1 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德1 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫1 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i1 小时前
完全卸载MariaDB
数据库·mariadb
期待のcode1 小时前
Redis的主从复制与集群
运维·服务器·redis
纤纡.1 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn2 小时前
【Redis】渐进式遍历
数据库·redis·缓存
橙露2 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
冰暮流星2 小时前
sql语言之分组语句group by
java·数据库·sql