重学Redis:Redis目录分析

开课吧樵夫2021-11-24 15:47

         随着互联网的快速发展,越来越多的人开始走进这个行业,那么今天小编就为大家讲解一下关于Redis 的介绍。

  1、什么是Redis?

  Redis 是用C语言开发的一个开源的高性能键值对(key-value )内存数据库,它是一种NoSQL 数据库。 它是【单进程单线程】的内存数据库,所以说不存在线程安全问题。它可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了【IO 多路复用(NIO思想)】。相比Memcache这种专业缓存技术,它有更优秀的读写性能,及丰富的数据类型。

  它提供了五种数据类型来存储【值】:字符串类型(string)、散列类型(hash)、列表类型(list)、集合 类型(set)、有序集合类型(sortedset、zset)

  2、Redis官网

  官网地址:http://redis.io/

  中文官网地址:http://www.redis.cn/

  下载地址:http://download.redis.io/releases/

  3、什么是NoSQL?

  NoSQL ,即Not-Only SQL (不仅仅是SQL ),泛指非关系型的数据库。

  什么是关系型数据库?数据结构是一种有行有列的数据库,NoSQL 数据库是为了解决高并发、高可用、高可扩展、大数据存储问题而产生的数据库解决方案。

  NoSQL 可以作为关系型数据库的良好补充,但是不能替代关系型数据库。

  4、NoSQL数据库分类

  键值(Key-Value)存储数据库

  相关产品:Tokyo Cabinet/Tyrant 、Redis 、Voldemort 、Berkeley DB

  典型应用:内容缓存,主要用于处理大量数据的高访问负载。

  数据模型:一系列键值对

  优势:快速查询

  劣势:存储的数据缺少结构化

  列存储数据库

  相关产品:Cassandra , HBase , Riak

  典型应用:分布式的文件系统

  数据模型:以列簇式存储,将同一列数据存在一起

  优势:查找速度快,可扩展性强,更容易进行分布式扩展

  劣势:功能相对局限

  文档型数据库

  相关产品:CouchDB 、MongoDB

  典型应用:Web 应用(与Key-Value 类似,Value 是结构化的)

  数据模型:一系列键值对

  优势:数据结构要求不严格

  图形(Graph )数据库

  相关数据库:Neo4J 、InfoGrid 、Infinite Graph

  典型应用:社交网络

  数据模型:图结构

  优势:利用图结构相关算法。

  劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

  5、Redis发展历史

  2008年,意大利的一家创业公司Merzia 推出了一款基于MySQL 的网站实时统计系统LLOOGG ,然而没过多久该公司 的创始人 Salvatore Sanfilippo 便对MySQL 的性能感到失望,于是他决定亲自为LLOOGG 量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis 。

  不过Salvatore Sanfilippo 并不满足只将Redis 用于LLOOGG 这一款产品,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo 将Redis 开源发布,并开始和Redis 的另一名主要的代码贡献者Pieter Noordhuis 一起继续着Redis 的开发,直到今天。

  Salvatore Sanfilippo 自己也没有想到,短短的几年时间,Redis 就拥有了庞大的用户群体。Hacker News 在 2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub 、Stack Overflow 、Flickr 等都是Redis 的用户。

  VMware 公司从2010年开始赞助Redis 的开发, Salvatore Sanfilippo 和Pieter Noordhuis 也分别在3月和5 月加入VMware ,全职开发Redis 。

  6、Redis应用场景

  内存数据库(登录信息、购物车信息、用户浏览记录等)

  缓存服务器(商品数据、广告数据等等)(最多使用)

  解决分布式集群架构中的session 分离问题(session 共享)

  任务队列(秒杀、抢购、12306等等)

  分布式锁的实现

  支持发布订阅的消息模式

  应用排行榜(有序集合)

  网站访问统计

  数据过期处理(可以精确到毫秒)

  Redis单机版安装配置

  1、Redis下载

  官网地址:http://redis.io/

  中文官网地址:http://www.redis.cn/

  下载地址:http://download.redis.io/releases/

  2、Redis安装环境

  Redis 没有官方的Windows 版本,所以建议在Linux 系统上安装运行,我们使用CentOS 7 (Linux 操作系统的一个系列)作为安装环境。

  3、Redis安装

第一步:安装C 语言需要的GCC 环境
yum  install -y gcc-c++
第二步:下载并解压缩Redis 源码压缩包
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxf redis-6.2.6.tar.gz
第三步:编译Redis 源码,进入redis-3.2.9 目录,执行编译命令
cd redis-6.2.6
make
第四步:安装Redis ,需要通过PREFIX 指定安装路径
make install PREFIX=/usr/local/redis

  4、Redis的目录结构

  安装完成后查看redis的安装目录

#以树形结构展示目录,2代表展示的深度
[root@localhost ~]# tree /usr/local/redis/ -L 2
/usr/local/redis/
└── bin
    ├── redis-benchmark
    ├── redis-check-aof -> redis-server
    ├── redis-check-rdb -> redis-server
    ├── redis-cli
    ├── redis-sentinel -> redis-server
    └── redis-server

1 directory, 6 files

  可以看到,安装目录目前只有bin目录,里边是一些可执行文件,其中redis-check-aof,redis-check-rdb,redis-sentinel都是redis-server的软连接,相当于Windows的快捷方式,所以实际有意义的文件只有redis-server,redis-cli,redis-benchmark

  redis-server:启动redis服务

  redis-benchmark:官方提供的压测工具

  redis-cli:启动redis客户端

  redis-sentinel:启动redis哨兵

  redis-check-aof:用于检查aof

  redis-check-rdb:用于检查rdb

  后边的学习中,我们只用这几个文件和配置文件即可完成所有的操作所需,接下来我们来看一下Redis的源代码目录(解压后的目录)

[root@localhost ~]# tree /home/redis-6.2.6 -L 2
/home/redis-6.2.6
├── 00-RELEASENOTES
├── BUGS
├── CONDUCT
├── CONTRIBUTING
├── COPYING
├── deps
│   ├── hdr_histogram
│   ├── hiredis
│   ├── jemalloc
│   ├── linenoise
│   ├── lua
│   ├── Makefile
│   ├── README.md
│   └── update-jemalloc.sh
├── INSTALL
├── Makefile
├── MANIFESTO
├── README.md
├── redis.conf
├── runtest
├── runtest-cluster
├── runtest-moduleapi
├── runtest-sentinel
├── sentinel.conf
├── src
│   ├── ......(大量源代码)
├── tests
│   ├── assets
│   ├── cluster
│   ├── helpers
│   ├── instances.tcl
│   ├── integration
│   ├── modules
│   ├── sentinel
│   ├── support
│   ├── test_helper.tcl
│   ├── tmp
│   └── unit
├── TLS.md
└── utils
    ├── build-static-symbols.tcl
    ├── cluster_fail_time.tcl
    ├── corrupt_rdb.c
    ├── create-cluster
    ├── generate-command-help.rb
    ├── gen-test-certs.sh
    ├── graphs
    ├── hashtable
    ├── hyperloglog
    ├── install_server.sh
    ├── lru
    ├── redis-copy.rb
    ├── redis_init_script
    ├── redis_init_script.tpl
    ├── redis-sha1.rb
    ├── releasetools
    ├── speed-regression.tcl
    ├── srandmember
    ├── systemd-redis_multiple_servers@.service
    ├── systemd-redis_server.service
    ├── tracking_collisions.c
    └── whatisdoing.sh
26 directories, 362 files

  redis.conf:redis的配置文件

  sentinel.conf:哨兵的配置文件

  src:包含用 C 编写的 Redis 实现

  tests:包含单元测试,在 Tcl 中实现

  deps:该目录包含所有 Redis 依赖项,除了 libc 应由操作系统提供

  Jemalloc 是内存分配器

  hiredis 是 Redis 官方 的C 客户端库

  linenoise 是 readline 的替代品

  lua 是 Lua 5.1.对安全性和附加库进行了微小的更改

  utils:一些工具和官方的脚本

  除了列出的这些,剩下的都是不重要的(可有可无)。在这些文件和目录中,其中deps是依赖库,src是源代码,tests是单元测试,都是我们运行Redis所不需要的,redis.conf,sentinel.conf,utils是我们后续所需要的,我们把它们复制到redis的bin目录里。

[root@localhost redis-6.2.6]# cp -rp redis.conf sentinel.conf utils/ /usr/local/redis/
[root@localhost redis-6.2.6]# cd /usr/local/redis/
[root@localhost redis]# ls
bin  redis.conf  sentinel.conf  utils

  5、Redis启动

  前端启动

  启动命令:redis-server ,直接运行bin/redis-server 将以前端模式启动

./redis-server

  关闭命令:ctrl+c

  启动缺点:客户端窗口关闭则redis-server 程序结束,不推荐使用此方法

  后端启动(守护进程启动)

  修改redis.conf

vim redis.conf
# 将`daemonize`由`no`改为`yes`
daemonize yes
# 默认绑定的是回环地址,默认不能被其他机器访问
# bind 127.0.0.1
# 是否开启保护模式,由yes该为no
protected-mode no 

  启动服务

./redis-server redis.conf
br

  后端启动的关闭方式

./redis-cli shutdown

  6、查看状态

  看到redis进程,说明redis已经启动

[root@localhost redis]# ps -ef|grep redis
root       3656      1  0 18:11 ?        00:00:00 ./bin/redis-server 127.0.0.1:6379
root       3662   1575  0 18:11 pts/0    00:00:00 grep --color=auto redis

  7、其他命令说明

redis-server :启动redis 服务redis-cli :进入redis 命令客户端redis-benchmark :性能测试的工具redis-check-aof :aof 文件进行检查的工具redis-check-dump :rdb 文件进行检查的工具redis-sentinel :启动哨兵监控服务

  专栏介绍

  本篇是Redis专栏的第一篇,后续每周更新两篇,在本专栏里,我们会从头开始重新学一遍Redis,从根上理解Redis的方方面面,包括Redis的常见面试题和大厂的解决方案,以及6.0的新特性和源码的一些讲解。

  本专栏前期会从基础开始重学一遍,可能会有一些枯燥,但是我保证,即便是基础的部分,也会让你有所收获,大佬请绕道,学完本专栏,无论是大厂面试还是工作需要,统统不在话下!!!

重学Redis:Redis目录分析

  以上就是开课吧小编为大家整理发布的“重学Redis:Redis目录分析”一文,更多相关内容尽在开课吧广场Java教程频道。

重学Redis:Redis目录分析

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用1
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
高并发编程训练营