Redis 安装及使用

Redis是一个开源的使用ANSI [C语言][1]编写、支持网络、可基于内存亦可持久化的日志型、Key-Value[数据库][2],并提供多种语言的API

redis是一个key-value[存储系统][3]。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list([链表][4])、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些[数据类型][5]都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了[memcached][6]这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

Redis应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(使用最多)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等) 
应用排行榜。 
网站访问统计。 
数据过期处理(可以精确到毫秒)

安装Redis

这里通过源码编译安装,大家也可以使用其他打包好的直接安装

进入服务器

wget 和tar要是没有 通过yum install wget tar来进行安装

执行下载源码命令

wget http://download.redis.io/releases/redis-5.0.5.tar.gz

> 
> 解压
> 
> ```
`tar xzf redis-5.0.5.tar.gz
`

进入解压目录

cd redis-5.0.5

> 
> 编译
> 
> ```
`make
`

make[1]: Entering directory `/opt/redis-5.0.5/src'

CC Makefile.dep

make[1]: Leaving directory`/opt/redis-5.0.5/src'

make[1]: Entering directory `/opt/redis-5.0.5/src'

rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark

(cd ../deps && make distclean)

make[2]: Entering directory`/opt/redis-5.0.5/deps'

(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-_)
make[2]: Leaving directory `/opt/redis-5.0.5/deps'

(rm -f .make-*)

echo STD=-std=c99 -pedantic -DREDIS_STATIC='' » .make-settings

echo WARN=-Wall -W -Wno-missing-field-initializers » .make-settings

echo OPT=-O2 » .make-settings

echo MALLOC=jemalloc » .make-settings

echo CFLAGS= » .make-settings

echo LDFLAGS= » .make-settings

echo REDIS_CFLAGS= » .make-settings

echo REDIS_LDFLAGS= » .make-settings

echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include » .make-settings

echo PREV_FINAL_LDFLAGS= -g -ggdb -rdynamic » .make-settings

(cd ../deps && make hiredis linenoise lua jemalloc)

make[2]: Entering directory`/opt/redis-5.0.5/deps'

(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-_)
(echo "" > .make-cflags)
(echo "" > .make-ldflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory `/opt/redis-5.0.5/deps/hiredis'

gcc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c

make[3]: gcc: Command not found

make[3]: *** [net.o] Error 127

make[3]: Leaving directory`/opt/redis-5.0.5/deps/hiredis'

make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/opt/redis-5.0.5/deps'

make[1]: [persist-settings] Error 2 (ignored)

CC adlist.o

/bin/sh: cc: command not found

make[1]: *** [adlist.o] Error 127

make[1]: Leaving directory`/opt/redis-5.0.5/src'

make: *** [all] Error 2

错误信息 需要我们安装gcc

执行命令 yum install gcc -y

make报错 zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录

执行 make MALLOC=libc进行编译

安装redis到/usr/local/redis中

make PREFIX=/usr/local/redis MALLOC=libc install

进入/usr/local/redis

cd /usr/local/redis

进入bin

cd bin

  • redis-benchmark redis性能测试工具
  • redis-check-aof AOF文件修复工具
  • redis-check-rdb RDB文件修复工具
  • redis-cli redis命令行客户端
  • redis.conf redis配置文件
  • redis-sentinal redis集群管理工具
  • redis-server redis服务进程

运行Redis

1.前端模式启动

直接运行 ./redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,故不推荐使用此方法。

2.后端模式启动

修改redis.conf配置文件, daemonize yes 以后端模式启动
vim /usr/local/redis/bin/redis.conf

启动

./redis-server ./redis.conf

[root@localhost bin]# ./redis-server ./redis.conf
30387:C 26 Sep 2019 19:15:50.676 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
30387:C 26 Sep 2019 19:15:50.676 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=30387, just started
30387:C 26 Sep 2019 19:15:50.676 # Configuration loaded

表示启动成功

验证Redis

通过运行redis-cli redis客户端进行服务的验证

[root@localhost bin]# ./redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
“bar”
127.0.0.1:6379>

出现上面表示Redis安装和启动成功

Redis关闭

强行终止redis进程可能会导致redis持久化数据丢失。

正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,

命令为:

cd /usr/local/redis
./bin/redis-cli shutdown

强行终止redis

pkill redis-server


### Redis 开启重启 {#toc_7}

> vim /etc/rc.local  
> //添加  
> /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf

### 常用配置 {#toc_8}

> redis-server –maxclients 100000 -f /etc/redis.conf
> 
> 配置redis的最大连接数
> 
> 在config中配置
> 
> bind 0.0.0.0 表示所有的ip
> 
> requirepass xxxx 表示设置密码
> 
> 只有配置了bind和requirepass之后 就可以通过redis的客户端访问数据了

### 其他 {#toc_9}

> 官网试用redis
> 
> <http://try.redis.io/>
> 
> 官网地址
> 
> [https://redis.io][7]
> 
> redis使用命令
> 
> <https://redis.io/commands>
> 
> redis配置文件
> 
> <https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf>
> 
> <https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf>

 [1]: https://baike.baidu.com/item/C%E8%AF%AD%E8%A8%80
 [2]: https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93/103728
 [3]: https://baike.baidu.com/item/%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F
 [4]: https://baike.baidu.com/item/%E9%93%BE%E8%A1%A8
 [5]: https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B
 [6]: https://baike.baidu.com/item/memcached
 [7]: https://redis.io/