redis的简介、安装

jopen 10年前

一、背景介绍:

redis的全称:remote dictonary server(远程字典服务器)

谁在使用redis:

国内使用redis的有:新浪微博、知乎、街旁,国外的有:GitHub 、StackOverflow 、Flicker、暴雪和Instagram

redis是做什么用的:

高性能键值对数据库 ,开发语言为:C,可以用作缓存和队列系统

redis支持的键值数据类型:

字符串类型、散列类型、列表类型、集合类型、有序集合类型

内存存储和持久化:

redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务

redis和memcached的区别和联系:

联系:二者均可作为缓存系统

区别:redis是单线程的,memcached是多线程的,故在多核处理器环境下,memcacahed的性能会更高一些,但是由于redis基本上都是在内存中操作,所以这些性能上的差别几乎可以不计,redis在高级数据类型和持久化方面要比memcached好一些

二、安装以及运行

2.1 在posix系统中安装:

redis约定此版本号,次版本号为偶数的为稳定版本(2.4.3),为奇数的是非稳定版本(2.11.1)

源码安装:a、从redis官网下载redis的稳定版源代码(redis-stable.tar.gz)

b、tar xzf redis-stable.tar.gz cd redis-stable

c、make d、make install (将编译生成的可执行文件拷贝到/usr/local/bin下)

e、最好执行 make test 确认安装的正确与否

2.2 redis的启动和停止

编译后生成的可执行文件有:

a、 redis-server redis服务器 b、redis-cli redis 命令行客户端 (command line interface) c、redis-benchmark 性能测试工具

d、redis-check-aof aof文件修复工具 e、redis-check-dump rdb文件检查工具

启动的两种方式:

(1)、直接启动:redis-server --port=8888 # 在8888 端口进行监听,默认的是6379

(2)、通过初始化脚本启动(以ubuntu和debian发行版为例)

在源代码的utils的文件redis_init_script为redis初始化脚本模板

a、将redis_init_script拷贝到/etc/init.d 重命名为redis_8888 ,同时修改该脚本文件中的监听的端口由默认的6379更改为8888

b、建立如下两个文件夹:

/etc/redis 在其中存放配置文件,源文件位于:源代码目录的顶层目录的redis.conf

/var/redis/8888 存放持久化文件

c、修改/etc/redis/redis.conf 为8888.conf,修改其中的一下四项:

daemonize yes 以守护进程的模式运行;pidfile /var/run/redis_8888.pid 设置redis的pid文件的位置

port 8888 ;监听端口 dir /var/redis/8888 持久化文件的存储位置

/etc/init.d/redis_8888 start 启动redis

然后执行使redis随系统的启动而启动sudo update-rc.d redis_8888 defaults

停止redis的方法:

redis-cli -p 8888 shutdown 这和使用kill redis的进程Id是一样的

redis-cli的使用说明:

redis-cli -h 192.168.1.129 -p 8888 redis-server位于192.168.1.129 端口在8888

> ping # 客户端和服务端是否连接正常 返回pong为正常

命令返回值类型:

状态恢复、错误回复、整数回复、字符串回复、多行字符串回复

keys * #显示当前的所有键

redis-server的配置:可以在启动的时候指定配置文件

redis-server /path/redis.conf

redis-server /path/redis.conf --loglevel warn #这是配置文件中的loglevel选项将被命令行中的值替换

使用config set 可以在不重启redis服务的情况下更改 部分 配置,使用config get loglevel获取指定配置项的值

多数据库:

redis-server默认有16个数据库,在redis.conf中配置,在redis-cli中可以使用select来进行切换

使用flushall会将这个redis实例中的所有数据库中的所有数据清空,并且一个redis实例中的所有数据库是同一个密码