redis基础:简介与安装

在这里插入图片描述
Redis是一个C语言编写的高性能的Key-Value数据库,作为传统数据库的有益补充,在共享Session等场景下有越来越广泛的应用。这篇文章介绍一下Redis的基本信息以及安装方式。

概要信息

Redis概要信息如下表所示:

项目说明
官网https://redis.io/
开源/闭源开源
源码管理:Githubhttps://github.com/antirez/redis
源码管理:官方http://download.redis.io/releases/redis-5.0.4.tar.gz
License类别BSD-3-Clause License
开发语言C
当前稳定版本5.0.4 (2019/03/19)
操作系统支持跨平台,支持Linux/Windows/Mac
官方镜像地址https://hub.docker.com/_/redis/

功能特性

Redis使用TCP的方式以客户端-服务器的CS构成实现数据服务的功能。其所支持的数据结构由于考虑到内存使用效率,Redis中的数据结构相较于高级编程语言中所用到的数据结构会使用更少的内存,同时提供了复制,集群,高可用性等常见的数据库的功能。关于其最主要的特性,正像官方镜像中对其功能的描述那样

Redis is an open source key-value store that functions as a data structure server.

主要特点在于如下3点:

  1. 开源
  2. key-value方式
  3. 数据结构存储

相较于其他的key-value形式的开源产品,支持多种数据结构称为其重要特性,其所支持的主要结构如下所示:
字符串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

除此之外还内置了LUA,支持LUA脚本的使用,关于LUA的介绍和简单使用方式可以参看如下文章:

版本管理

Redis使用标准的三段式版本管理实践,具体格式如下所示:

版本格式:major.minor.patchlevel

安装方式

可以使用多种方式进行安装使用,基本都是属于将可执行的文件

  • 源码编译方式
  • 操作系统自带的Package安装方式
  • 官方镜像的docker方式

源码方式安装

源码方式安装在MacOS或者Linux上都是类似,如下以在MacOS上为例进行说明

  • 下载对应版本的redis源码并解压
liumiaocn:share liumiao$ mkdir redis
liumiaocn:share liumiao$ cd redis
liumiaocn:redis liumiao$ ls
liumiaocn:redis liumiao$ pwd
/usr/local/share/redis
liumiaocn:redis liumiao$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
...省略
redis-5.0.4.tar.gz                100%[=============================================================>]   1.88M  37.3KB/s    in 81s     
...省略
liumiaocn:redis liumiao$ ls
redis-5.0.4.tar.gz
liumiaocn:redis liumiao$ tar xvpf redis-5.0.4.tar.gz 
x redis-5.0.4/
...省略
x redis-5.0.4/utils/whatisdoing.sh
liumiaocn:redis liumiao$ ls
redis-5.0.4        redis-5.0.4.tar.gz
liumiaocn:redis liumiao$ cd redis-5.0.4
liumiaocn:redis liumiao$ cd redis-5.0.4
liumiaocn:redis-5.0.4 liumiao$ ls
00-RELEASENOTES  COPYING          Makefile         redis.conf       runtest-sentinel tests
BUGS             INSTALL          README.md        runtest          sentinel.conf    utils
CONTRIBUTING     MANIFESTO        deps             runtest-cluster  src
liumiaocn:redis-5.0.4 liumiao$
  • 执行make进行编译
liumiaocn:redis-5.0.4 liumiao$ make
cd src && /Library/Developer/CommandLineTools/usr/bin/make all
    CC Makefile.dep
...
    INSTALL redis-check-rdb
    INSTALL redis-check-aof

Hint: It's a good idea to run 'make test' ;)

liumiaocn:redis-5.0.4 liumiao$
  • 执行make test进行验证
liumiaocn:redis-5.0.4 liumiao$ make test
...省略

\o/ All tests passed without errors!

Cleanup: may take some time... OK
liumiaocn:redis-5.0.4 liumiao$ 
  • 执行make install 进行安装
liumiaocn:redis-5.0.4 liumiao$ make install
cd src && /Library/Developer/CommandLineTools/usr/bin/make install
...省略
    INSTALL install
liumiaocn:redis-5.0.4 liumiao$ 

安装确认:源码方式

使用make install之后,缺省会将有执行权限的redis相关的二进制文件拷贝至/usr/local/bin下,可使用which命令进行确认

liumiaocn:redis-5.0.4 liumiao$ which redis-server
/usr/local/bin/redis-server
liumiaocn:redis-5.0.4 liumiao$ redis-server --version
Redis server v=5.0.4 sha=00000000:0 malloc=libc bits=64 build=c8feb247a5d1dce2
liumiaocn:redis-5.0.4 liumiao$ 

启动redis服务端

redis的设定文件为redis.conf,有很多设定选项,此处进行确认时均采用缺省设定进行启动,这样只需要执行redis-server即可启动服务端进程。

liumiaocn:jenkins liumiao$ redis-server 
15726:C 24 Apr 2019 20:45:11.367 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
15726:C 24 Apr 2019 20:45:11.367 # Redis version=5.0.4, bits=64, commit=00000000, modified=0, pid=15726, just started
15726:C 24 Apr 2019 20:45:11.367 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
15726:M 24 Apr 2019 20:45:11.369 * Increased maximum number of open files to 10032 (it was originally set to 256).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.4 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 15726
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

15726:M 24 Apr 2019 20:45:11.371 # Server initialized
15726:M 24 Apr 2019 20:45:11.371 * Ready to accept connections

通过客户端进行连接

前面提到了redis是CS构成,并介绍了通过redis-server即可启动服务器端,而使用redis-cli作为客户端进行连接。

liumiaocn:~ liumiao$ which redis-cli
/usr/local/bin/redis-cli
liumiaocn:~ liumiao$ redis-cli --version
redis-cli 5.0.4
liumiaocn:~ liumiao$

连接并确认

使用-h指定redis服务器所在ip或者机器名,通过-p指定其运行的端口,缺省为6379,实际上缺省localhost和6379的情况下直接redis-cli回车即可。

liumiaocn:~ liumiao$
liumiaocn:~ liumiao$ redis-cli -h localhost -p 6379
localhost:6379> 

安装确认:官方镜像方式

可以使用官方标准镜像,官方进行分普通版和alpine版,以5.0.4为例,镜像的下载方式如下所示

类别镜像tag下载命令
普通版5.0.4docker pull redis:5.0.4
alpine版5.0.4-alpine3.9docker pull redis:5.0.4-alpine3.9
  • 执行示例
    执行示例如下所示
liumiaocn:db liumiao$ docker pull redis:5.0.4
5.0.4: Pulling from library/redis
...省略
Status: Downloaded newer image for redis:5.0.4
liumiaocn:db liumiao$

liumiaocn:db liumiao$ docker pull redis:5.0.4-alpine3.9
5.0.4-alpine3.9: Pulling from library/redis
...省略
Status: Downloaded newer image for redis:5.0.4-alpine3.9
liumiaocn:db liumiao$
  • 启动服务
liumiaocn:~ liumiao$ mkdir redis
liumiaocn:~ liumiao$ cd redis
liumiaocn:redis liumiao$ mkdir data
liumiaocn:redis liumiao$ docker run -p 20379:6379 -v`pwd`/data:/data --name=redis -d redis:5.0.4-alpine3.9 redis-server
2a093fa8480da2beff5ed4cecbc448d444b75afc12b9ccdd785befaf9f7a7b34
liumiaocn:redis liumiao$ docker ps |grep redis
2a093fa8480d        redis:5.0.4-alpine3.9    "docker-entrypoint.s…"   2 seconds ago       Up 4 seconds        0.0.0.0:20379->6379/tcp   redis
liumiaocn:redis liumiao$

因为此处示例是使用端口转换,将容器中的6379转换为了20379,所以使用客户端连接的时候需要指定端口号

liumiaocn:redis liumiao$ redis-cli -h localhost -p 20379
localhost:20379> info server
# Server
redis_version:5.0.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:e0bf1ed947563972
redis_mode:standalone
os:Linux 4.9.87-linuxkit-aufs x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0
process_id:1
run_id:1793347818588a21273d9f779fcf5c04a2ad1c3d
tcp_port:6379
uptime_in_seconds:141
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:12583149
executable:/data/redis-server
config_file:
localhost:20379> 

关于6379的梗

以前在写tensorflow相关介绍的时候,接触过42这个数字,结果发现这个梗能说一天那么多。有兴趣的可以点击看一下:

而redis的6379缺省端口,除了设定不足给黑客留下劫持端口用在外,还有一个很有趣的梗,很多文章都说这个实际上是一位意大利美女的电话号码,好奇心起来之后找到redis作者的原文,看到了实际的情况是这样的
在这里插入图片描述
这位show girl的名字叫做Alessia Merz,而6379不是什么电话号码,而是早期拨号手机上打出Merz的字母所对应的数字按键,而Alessia Merz相关的介绍如下,不过建议不要点击来看。

  • http://it.wikipedia.org/wiki/Alessia_Merz
    在redis的作者眼中,Merz与愚蠢则是完全划上等号的。可能除了Merz,很多人都会觉得这是一种幽默,但是这个梗只能说一分钟,毕竟有人身攻击的嫌疑。但是另外一个梗则是redis的6379的默认端口和设定往往会带来被攻击的可能性,不知道算不算是替Merz还了一箭之仇。使用 端口劫持 + redis + 6379 + 挖矿 作为关键字,你能搜到很多有趣和悲催的经历。

总结

由于结尾有点跑题,这里总结一下将楼拉正,这篇文章介绍了Redis的概要信息以及两种常用的安装方法,并结合6379的梗提示了安全设定的重要性。

参考内容

http://oldblog.antirez.com/post/redis-as-LRU-cache.html

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值