Redis 安装及使用
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类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'
/opt/redis-5.0.5/src'
CC Makefile.dep
make[1]: Leaving directory
make[1]: Entering directory/opt/redis-5.0.5/src'
/opt/redis-5.0.5/deps'
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
(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'
/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
(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'
/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
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory/opt/redis-5.0.5/deps'
/opt/redis-5.0.5/src'
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
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 开启重启
vim /etc/rc.local
//添加
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
常用配置
redis-server –maxclients 100000 -f /etc/redis.conf
配置redis的最大连接数
在config中配置
bind 0.0.0.0 表示所有的ip
requirepass xxxx 表示设置密码
只有配置了bind和requirepass之后 就可以通过redis的客户端访问数据了
其他
官网试用redis
官网地址
redis使用命令
redis配置文件
https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf
https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf