一、简介
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis采用了内存中(in-memory)数据集(dataset)的方式
Redis是一款非关系型数据库。
Redis是高性能内存数据库,它将数据存储在内存中,并以key:value形式存储数据。
软件特性:
-
透明性:分布式系统对用户来说是透明的,一个分布式系统在用户面前的表现就像一个传统的单处理机分时系统,可让用户不必了解内部结构就可以使用。
-
扩展性:分布式系统的最大特点就是可扩展性,他可以根据需求的增加而扩展,可以通过横向扩展使集群的整体性能得到线性提升,也可以通过纵向扩展单台服务器的性能使服务器集群的性能得到提升。
-
可靠性:分布式系统不允许单点失效的问题存在,它的基本思想是:如果一台服务器坏了,其他服务器接替它的工作,具有持续服务的特性。
-
高性能:高性能是人们设计分布式系统的一个初衷,如果建立了一个透明,灵活,可靠的分布式系统,但他运行起来像蜗牛一样慢,那这个系统就是失败的。
Redis优点:
1.高速读写:redis所有数据都是存储在内存的,使用C语言,速度很快,使用的是单线程
2.数据类型丰富:string(字符串)、list(列表)、set(集合)、zset(sorted set ,有序集合)、hash(哈希类型)
3.支持持久化
4.多种内存分配及回收策略
5.支持事物、锁
6.消息队列、消息订阅
7.支持高可用:哨兵模式、主从同步
8.支持分布式分片集群
应用场景:
1.缓存
2.Session共享
3.消息队列
4.排行榜
5.计数器
6.好友关系(QQ、微博等)
软件获取和帮助:
官方网站:https://redis.io/
下载网站:http://download.redis.io/releases/
帮助网站:http://redisdoc.com/
二、Redsi安装部署
这里采用redis的源码包安装,以redis-3.2.12版本为例。
1.下载源码包
[root@redis ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz
2.安装依赖环境
[root@redis ~]# yum install -y gcc gcc-c++
3.编译安装
- 解压源码包
[root@redis ~]# tar xf redis-3.2.12.tar.gz
[root@redis ~]# mv redis-3.2.12 /usr/local/
[root@redis ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis
- 编译安装
[root@redis ~]# cd /usr/local/redis/
[root@redis ~]# make && make install
4.配置redis命令环境变量
[root@redis ~]# echo "export PATH=/usr/local/redis/src:\$PATH" > /etc/profile.d/redis.sh
[root@redis ~]# source /etc/profile.d/redis.sh
5.修改redis配置文件
创建redis工作目录
[root@redis ~]# mkdir -p /service/redis/6379
创建配置文件,修改一些redis的基本配置
[root@redis ~]# vim /service/redis/6379/redis.conf
bind 127.0.0.1 #监听IP
port 6379 #端口
daemonize yes #开启守护程序运行,后台运行
pidfile /service/redis/redis_6379.pid #指定pid文件
logfile "/service/redis/6379/redis.log" #指定日志文件
6.启动redis服务
- 指定配置文件启动(建议使用这种)
[root@redis ~]# redis-server /service/redis/6379/redis.conf
- 不指定配置文件启动
这种启动方式,redis使用的默认配置。
[root@redis ~]# redis-server &
7.连接redis
[root@redis ~]# redis-cli
127.0.0.1:6379>
8.关闭redis
- bash命令行关闭
[root@redis ~]# redis-cli shutdown
- redis交互命令行关闭
127.0.0.1:6379> shutdown
三、redis常用命令
1.连接redis
[root@redis ~]# redis-cli
127.0.0.1:6379>
2.查看所有key
127.0.0.1:6379> keys *
1) "k1"
#keys * 很危险,如果数据很多,查看所有数据redis容易死掉,查看所有数据之前,先看大小
127.0.0.1:6379> DBSIZE
3.添加一条数据(SET)
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
4.查看数据(GET)
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> get k2
"v2"
5.修改键值(SET)
127.0.0.1:6379> set k1 111111
OK
127.0.0.1:6379> get k1
"111111"
6.修改键名(RENAME)
127.0.0.1:6379> rename k1 num
OK
127.0.0.1:6379> keys *
1) "num"
2) "k2"
7.追加数据(APPEND)
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> append k2 22222
(integer) 7
127.0.0.1:6379> get k2
"v222222"
8.删除数据(DEL)
127.0.0.1:6379> keys *
1) "num"
2) "k2"
127.0.0.1:6379> del k2
(integer) 1
127.0.0.1:6379> keys *
1) "num"
9.redis在线查看和修改配置(CONFIG)
- 查看配置(CONFIG GET)
#查看redis的所有配置
127.0.0.1:6379> config get *
#查看指定配置
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123"
127.0.0.1:6379> config get port
1) "port"
2) "6379"
- 修改配置(CONFIG SET),临时生效
127.0.0.1:6379> config set requirepass 234
OK
127.0.0.1:6379> auth 234
OK
10.判断key是否存在(EXISTS)
127.0.0.1:6379> EXISTS num
(integer) 1
# 1 表示存在,2 表示不存在
11.查看key的类型(TYPE)
127.0.0.1:6379> type num
string
12.设置数据生存时间
- 以秒为单位设置生存时间(EXPIRE)
#方法一
127.0.0.1:6379> set name whb
OK
127.0.0.1:6379> expire name 10
(integer) 1
#方法二
127.0.0.1:6379> set name whb ex 10
OK
- 以毫秒为单位设置生存时间(PEXPIRE)
#方法一
127.0.0.1:6379> set sex nan
OK
127.0.0.1:6379> pexpire sex 10000
(integer) 1
#方法二
127.0.0.1:6379> set sex nan px 10000
OK
- 查看剩余生存时间(TTL)
127.0.0.1:6379> ttl sex
(integer) 6
- 取消剩余生存时间(PERSIST)
127.0.0.1:6379> set address anhui ex 100
OK
127.0.0.1:6379> TTL address
(integer) 80
127.0.0.1:6379> persist address
(integer) 1
127.0.0.1:6379> TTL address
(integer) -1
# -1 表示无生存时间,-2 表示key不存在
四、配置Redis登录密码
1.临时设置
127.0.0.1:6379> config set requirepass 123
OK
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) "num"
127.0.0.1:6379>
2.永久设置
修改配置文件
[root@redis ~]# vim /service/redis/6379/redis.conf
requirepass 123 #指定redis密码
重启redis后,连接redis
方法一:进入redis后,进行密码认证
[root@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) "num"
方法二:在命令行指定密码认证
[root@redis ~]# redis-cli -a 123
127.0.0.1:6379> keys *
1) "num"