Redis 服务
一、Redis简介
1.什么是redis
非关系型数据库,将数据存储在内存的数据库,存储形式 key:value
Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品。
Redis采用内存(In-Memory)数据集(DataSet) 。
运行于大多数POSIX系统,如Linux、*BSD、OS X等。
2.为什么使用redis
1.因为功能全面
2.大多数公司都使用
3.redis的功能
1.会话保持(mysql,file)
2.缓存(memcache)
3.消息队列(kafka,zero-mq,rebbit-mq)
4.软件特性
1)透明性:分布式系统对用户来说是透明的,一个分布式系统在用户面前的表现就像一个传统的单处理机分时系统,可让用户不必了解内部结构就可以使用。
2)扩展性:分布式系统的最大特点就是可扩展性,他可以根据需求的增加而扩展,可以通过横向扩展使集群的整体性能得到线性提升,也可以通过纵向扩展单台服务器的性能使服务器集群的性能得到提升。
3)可靠性:分布式系统不允许单点失效的问题存在,它的基本思想是:如果一台服务器坏了,其他服务器接替它的工作,具有持续服务的特性。
4)高性能:高性能是人们设计分布式系统的一个初衷,如果建立了一个透明,灵活,可靠的分布式系统,但他运行起来像蜗牛一样慢,那这个系统就是失败的。
5.redis相关页面
官方网站:https://redis.io/
下载网站:http://download.redis.io/releases/
帮助网站:http://redisdoc.com/
6.redis特点
1.高速读写
redis所有数据都是存储在内存的,使用C语言,速度很快,使用的是单线程
2.数据类型丰富
String: 字符串类型
Hash: 哈希类型
List: 列表类型
Set: 集合类型
Sorted set: 顺序集合类型
3.支持持久化
4.多种内存分配及回收策略
5.支持事物,锁
6.消息队列、消息订阅
7.支持高可用
哨兵
主从
8.支持分布式分片集群
9.支持的服务多
python/java/php/C/nodejs
7.企业缓存数据库解决方案对比
Memcached:
1)优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。
2)缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高
Redis:
1)优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
2)缺点:多线程读写较Memcached慢
Tair:
1)优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
2)缺点:单机情况下,读写性能较其他两种产品较慢
8.对比总结
1.Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)。
2.Redis:单核缓存服务,在单节点情况下,更加适合少量用户,多次访问的应用场景。
#redis一般在企业中,是单机多实例架构
9.redis应用场景
1.会话保持
2.缓存
3.消息队列
结合ELK收集日志
kafka做消息队列,用于数据处理
4.排行榜
5.计数器
点赞点踩
6.社交软件
QQ,微博
二、redis安装
1.下载或上传包
[root@db01 ~]# rz redis-3.2.12.tar.gz
#或
[root@db01 ~]# wget http://download.redis.io/releases/redis-3.2.13.tar.gz
2.安装依赖
[root@db01 ~]# yum install -y gcc gcc-c++
3.解压包
[root@db01 ~]# tar xf redis-3.2.12.tar.gz
[root@db01 ~]# mv redis-3.2.12 /usr/local/
[root@db01 ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis
4.安装
[root@db01 ~]# cd /usr/local/redis/
[root@db01 redis]# make
5.启动redis
[root@db01 redis]# /usr/local/redis/src/redis-server &
6.连接redis
[root@db01 redis]# /usr/local/redis/src/redis-cli
127.0.0.1:6379>
7.配置环境变量
[root@db01 redis]# vim /etc/profile.d/redis.sh
export PATH=/usr/local/redis/src:$PATH
[root@db01 redis]# source /etc/profile
[root@db01 redis]# redis-cli
127.0.0.1:6379>
8.关闭redis
[root@db01 redis]# redis-cli
127.0.0.1:6379> shutdown
[root@db01 redis]# redis-cli shutdown
三、redis配置
1.默认配置文件
[root@db01 redis]# ll /usr/local/redis/redis.conf
-rw-rw-r--. 1 root root 46695 Jun 13 2018 /usr/local/redis/redis.conf
2.编辑配置文件
[root@db01 redis]# vim /usr/local/redis/redis.conf
bind 127.0.0.1 172.16.1.51 #监听IP
protected-mode yes #禁止其他公网访问redis
port 6379 #端口
tcp-backlog 511 #等待区大小
timeout 0 #超时时间
tcp-keepalive 300 #长连接
daemonize yes #后台启动
supervised no #使用system启动再配置
pidfile /var/run/redis_6379.pid #指定pid文件
loglevel notice #日志级别
logfile "/usr/local/redis/redis.log" #指定日志文件
databases 16 #16个数据库(0-15)
3.指定配置文件
[root@db01 redis]# mkdir /service/redis/6379 -p
[root@db01 redis]# vim /service/redis/6379/redis.conf
bind 127.0.0.1 172.16.1.51
port 6379
daemonize yes
pidfile /service/redis/6379/redis_6379.pid
loglevel notice
logfile "/service/redis/6379/redis.log"
#指定配置文件启动
[root@db01 redis]# redis-server /service/redis/6379/redis.conf
四、redis操作
1.基本操作
1.连接redis
[root@db01 redis]# redis-cli
2.查看所有key
127.0.0.1:6379> keys *
1) "k1"
#keys * 很危险,如果数据很多,查看所有数据redis容易死掉,查看所有数据之前,先看大小
127.0.0.1:6379> DBSIZE
3.添加一条数据
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
4.查看数据
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> get k2
"v2"
5.修改数据(重新赋值)
127.0.0.1:6379> set k1 v1111111
OK
6.修改键名
127.0.0.1:6379> RENAME k1 k11111
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k11111"
7.追加数据
127.0.0.1:6379> APPEND k11111 2222
(integer) 12
127.0.0.1:6379> keys *
1) "k2"
2) "k11111"
127.0.0.1:6379> get k11111
"v11111112222"
8.删除数据
127.0.0.1:6379> del k1 k2
(integer) 2
127.0.0.1:6379> keys *
1) "k11111"
2.配置密码
#1.配置密码
[root@db01 redis]# vim /service/redis/6379/redis.conf
... ...
requirepass 123
#2.重启
[root@db01 redis]# redis-cli shutdown
[root@db01 redis]# redis-server /service/redis/6379/redis.conf
#3.密码使用
[root@db01 redis]# redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH 123 #输入登录密码
OK
127.0.0.1:6379> keys *
1) "k1"
#登录redis
[root@db01 redis]# redis-cli -a 123
127.0.0.1:6379> keys *
1) "k1"
#4.redis中查看配置文件
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "123"
(error) ERR Wrong number of arguments for CONFIG GET
127.0.0.1:6379> CONFIG GET *
#5.redis中修改配置
127.0.0.1:6379> CONFIG SET requirepass 234
OK
[root@db01 redis]# redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH 234
127.0.0.1:6379> keys *
1) "k1"