redis基本概念及部署redis
1.redis介绍
rediis是一种基于键值对的NoSQL数据库,与很多键值对数据库不同,redis中的值可以有string、hash、list、set、zset、geo等多种数据结构和算法组成。
redis会将所有的数据都放在内存中,因此redis的读写性能非常快,redis还可以将内存中的数据利用快照和日志的形式保存在硬盘上,redis还提供了键过期,发布订阅,事务,流水线等附加功能
2.redis的特点
速度快
redis所有的数据都存放在内存中
redis使用c语言实现
redis使用单线程架构
基于键值对的数据结构服务器
所谓键值对就是key/value
5种数据结构:字符串、哈希、列表、集合、有序结合
丰富的功能
提供了键过期功能,可以实现缓存
提供了发布订阅功能,可以实现消息系统
提供了pipeline功能,客户端可以将一批命令一次性传给redis,减少了网络开销
稳定简单
源码很少,3.0版本以后,只有5万行代码
使用单线程模型,使得redis服务端处理模型变得简单
不依赖操作系统中的类库
客户端支持的语言多
java、php、python、c、c++、nodejs
持久化
RDB和AOF
集群
主从复制
哨兵模式
集群
3.redis应用场景
缓存(键过期时间)
缓存可以通过键过期时间进行设置
缓存session会话
每个网站都有登陆过期时间,例如24小时不登录就会退出
缓存用户信息,找不到数据再去mysql查,查到之后再次写到redis
排行榜(列表和有序集合)
可以通过redis列表和有序集合做出排行榜功能
热度排名排行榜
发布时间排行榜
计数器应用
帖子浏览数
视频播放次数
商品浏览数
社交网络
踩/赞、粉丝、共同好友、喜好、推送、打标签
消息队列系统
可以作为一个仓库使用,当数据全部取走,仓库删除
可以配合elk实现日系收集
4.redis的部署、配置、启动、关闭
4.1.部署redis
1.创建redis部署路径 [root@redis-1 ~]# mkdir -p /data/redis_cluster/redis_6379/{conf,pid,logs,data} [root@redis-1 ~]# tree /data/redis_cluster/ /data/redis_cluster/ └── redis_6379 ├── conf ├── logs ├── pid └── data 2.下载redis [root@redis-1 ~]# mkdir /data/soft [root@redis-1 ~]# cd /data/soft [root@redis-1 /data/soft]# wget https://repo.huaweicloud.com/redis/redis-3.2.9.tar.gz 3.便于安装redis [root@redis-1 /data/soft]# tar xf redis-3.2.9.tar.gz -C /data/redis_cluster/ [root@redis-1 /data/soft]# cd /data/redis_cluster/ [root@redis-1 /data/redis_cluster]# ln -s redis-3.2.9/ redis [root@redis-1 /data/redis_cluster]# cd redis/src [root@redis-1 /data/redis_cluster/redis]# make && make install
4.2.redis可执行文件
make install完redis的可执行命令都存放在了/usr/local/bin下
[root@redis-1 /data/redis_cluster/redis]# ll /usr/local/bin/redis-*
-rwxr-xr-x. 1 root root 2433000 1月 27 13:32 /usr/local/bin/redis-benchmark
-rwxr-xr-x. 1 root root 25128 1月 27 13:32 /usr/local/bin/redis-check-aof
-rwxr-xr-x. 1 root root 5181912 1月 27 13:32 /usr/local/bin/redis-check-rdb
-rwxr-xr-x. 1 root root 2585960 1月 27 13:32 /usr/local/bin/redis-cli
lrwxrwxrwx. 1 root root 12 1月 27 13:32 /usr/local/bin/redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 5181912 1月 27 13:32 /usr/local/bin/redis-server
4.3.使用redis官方脚本生成redis配置文件
[root@redis-1 ~]# cd /data/redis_cluster/redis/utils/ [root@redis-1 /data/redis_cluster/redis/utils]# sh install_server.sh Welcome to the redis service installer This script will help you easily set up a running redis server Please select the redis port for this instance: [6379] Selecting default: 6379 Please select the redis config file name [/etc/redis/6379.conf] Selected default - /etc/redis/6379.conf Please select the redis log file name [/var/log/redis_6379.log] Selected default - /var/log/redis_6379.log Please select the data directory for this instance [/var/lib/redis/6379] Selected default - /var/lib/redis/6379 Please select the redis executable path [/usr/local/bin/redis-server] Selected config: Port : 6379 Config file : /etc/redis/6379.conf Log file : /var/log/redis_6379.log Data dir : /var/lib/redis/6379 Executable : /usr/local/bin/redis-server Cli Executable : /usr/local/bin/redis-cli Is this ok? Then press ENTER to go on or Ctrl-C to abort. Copied /tmp/6379.conf => /etc/init.d/redis_6379 Installing service... Successfully added to chkconfig! Successfully added to runlevels 345! Starting Redis server... 执行完在/etc/redis/目录下面即可看到配置文件 [root@redis-1 /data/redis_cluster/redis/utils]# ls /etc/redis/ 6379.conf
4.4.配置redis并启动
一般编译安装完之后,redis目录就没什么用了,在生产环境中,都是新建一个redis目录,里面存放配置文件,直接启动就行,因为一台机器上会部署很多个redis
1.配置redis [root@redis-1 ~]# vim /data/redis_cluster/redis_6379/conf/redis_6379.conf #以守护进程模式启动 daemonize yes #绑定主机地址 bind 192.168.81.210 127.0.0.1 #监听端 port 6379 #pid和log文件所在路径 pidfile /data/redis_cluster/redis_6379/pid/redis_6379.pid logfile /data/redis_cluster/redis_6379/logs/redis_6379.log #设置数据库的数量,默认为0 databases 16 #指定本地持久化文件的文件名,默认dump.rdb dbfilename redis_6379.rdb #本地数据库的目录,持久化文件路径 dir /data/redis_cluster/redis_6379/data 2.启动redis [root@redis-1 ~]# redis-server /data/redis_cluster/redis_6379/conf/redis_6379.conf 3.查看进程和端口号 [root@redis-1 ~]# ps aux | grep redis root 16597 0.1 0.4 136972 7528 ? Ssl 13:57 0:00 /usr/local/bin/redis-server 127.0.0.1:6379 [root@redis-1 ~]# netstat -lnpt | grep redis tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 16597/redis-server
4.5.redis关闭方式
不管是关系型数据库还是缓存数据库,都不能直接kill,会导致数据文件丢失
关闭redis的方式需要在redis-cli交互模式输入shutdown即可关闭或者使用redis-cli shutdown
[root@redis-1 ~]# redis-cli 127.0.0.1:6379> SHUTDOWN not connected> exit [root@redis-1 ~]# ps aux | grep redis 第二种关闭redis的方法 [root@redis-1 ~]# redis-cli shutdown