学习Redis,是一种怎样的体验
兄弟们Redis撸起来!
Redis是什么
首先让我们看下来自官网翻译过来的Redis介绍:
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串,散列,列表,集合,有序集合与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
简单来说Redis是一个开源的高性能缓存数据库,使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库。其中value可以是 strings、hashes、lists、sets、sorted、sets等多种数据结构,可以满足很多应用场景。还提供了键过期、发布订阅、事务、流水线等附加功能。
这么说也不简单,那我们举个例子:小明每次回家的时候,都要从书包掏出一把钥匙串(这里就相当于数据存放在了数据库),然后在这把钥匙串里找到大门的钥匙,最后打开大门。这个时候小明灵机一动,配了一把备用钥匙放到了家门口地毯下(这里相当于把数据存入Redis),等他再回家开门的时就不用去书包翻找钥匙了,而是直接从门口地毯下找出钥匙(这里相当于降低访问数据库IO,使用Redis缓存数据),这样就节约了很多时间。有一天小明不小心把地毯下的备用钥匙放到了客厅里,就只好使用书包里的钥匙开门(这里相当于缓存过期了,访问数据库读取数据),进到客厅后把备用钥匙又放到门口地毯下(这里相当于如果读去Redis时没有数据,就把读取到的数据库中数据存入Redis中),以便下次使用。
这样我们就可以清楚知道Redis的作用了:能快速响应,减少应用程序执行效率、减轻数据库io的压力
Redis的特点
1. 速度快
Redis执行命令的速度非常快,根据官方提供的数据读写性能可以达到10万/秒,当然这也取决于机器的性能。Redis如此之快的速度可以大致归纳为以下三点:
- 所有数据都是存放在内存中的,所以把数据放在内存中是Redis速度快的最主要原因(可持久化)。
- Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更快。
- Redis使用了单线程架构,预防了多线程之间产生的资源竞争问题。
2. 键值对的数据结构服务器
Redis中的值不仅可以是字符串,而且还可以是其它的数据结构,比如:字符串、哈希、列表、集合、有序集合等。
3. 丰富的功能
Redis还提供了许多额外的功能:
- 提供了键过期功能,可以用来实现缓存。
- 提供了发布订阅功能,可以用来实现消息系统。
- 支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
- 提供了简单的事务功能,能在一定程度上保证事务特性,Redis是弱事务。
- 提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到Redis,减少了网络的开销
4. 简单稳定
Redis的简单主要表现在三个方面。
- Redis的源码很少。
- Redis使用单线程模型,这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单。
- Redis不需要依赖于操作系统中的类库
5. 持久化
将数据放在内存中是不安全的,机器一旦因为某些原因重启了,重要的数据就会丢失,因此Redis提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性。
6. 主从复制
Redis提供了复制功能,实现了master
和salve
数据副本之间的复制,主从复制功能是分布式Redis的基础。
7. 高可用和分布式转移
Redis从2.8版本正式提供了高可用实现Redis Sentinel
(哨兵模式),它能够保证Redis节点的故障发现和故障自动转移。
Redis从3.0版本正式提供了分布式实现Redis Cluster
(集群模式),它是Redis真正的分布式实现,提供了高可用、读写和容量的扩展性
8. 客户端语言多
Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,例如Java、PHP、Python等。
Redis使用场景
1. 热点数据的缓存
比如缓存高频次访问的数据,降低数据库io。另外结合expire,我们可以设置过期时间然后再进行缓存更新操作
2. 消息队列
由于Redis有list push和list pop这样的命令,所以能够很方便的执行队列操作。
3. 数据统计
如电商网站商品的浏览量、视频网站视频的播放数等
4. 社交网络
点赞、好友等相互关系的存储
如何学习Redis
说了这么多,如果想获取更多更准确的关于Redis详细信息,请参考下面几个关于Redis的网站
-
Redis 官网:redis.io
-
Redis 中文官网:www.redis.net.cn
-
Redis 在线测试:try.redis.io
-
Redis 命令参考1:doc.redisfans.com
-
Redis 命令参考2:redisdoc.com
Redis安装
好了,闲话少说,兄弟们让我们遨游在Redis的海洋里。
目前Redis支持windows
和linux
两种操作系统,对于windows
的安装方式本章不做讲解。对于Linux
下, 简单的介绍两种安装方式,在线安装和安装包安装。下面的安装步骤都是以能启动Redis并连接使用为目的,其它额外的属性配置本我们就不做详解了,大家有兴趣可以自己研究下。
方式一、在线安装
1. 更新yum源
sudo yum install epel-release
sudo yum update
2. 安装Redis
sudo yum -y install redis
3. 启动Redis服务
sudo systemctl start redis
4. 查看Redis进程
[root@VM_0_2_centos /]# ps -ef|grep redis
redis 12010 1 0 20:50 ? 00:00:06 /usr/bin/redis-server *:6379
root 32387 19488 0 23:14 pts/0 00:00:00 grep --color=auto redis
5. 修改配置文件
另外,为了可以是redis能被远程连接,需要修改配置文件,路径为 /etc/redis.conf
vi /etc/redis.conf
# 开启远程连接,取消这一行注释:
#bind 127.0.0.1
另外,推荐给Redis设置密码,取消注释这一行:
#requirepass foobared
#foobared即当前密码,可以自行修改为
requirepass 密码
# 配置redis为后台启动
daemonize no
# 修改为
daemonize yes
6. 重启Redis服务
sudo systemctl restart redis
使用redis-cli进入redis命令行模式进行操作
[root@VM_0_2_centos bin]# /usr/bin/redis-cli
如果有密码, 使用密码登录
[root@VM_0_2_centos bin]# ./redis-cli -h 127.0.0.1 -p 6379 -a 密码
127.0.0.1:6379> get aaa
"123"
127.0.0.1:6379> get aaa
7. 其它命令
systemctl start redis.service #启动redis服务器
systemctl stop redis.service #停止redis服务器
systemctl restart redis.service #重新启动redis服务器
systemctl status redis.service #获取redis服务器的运行状态
systemctl enable redis.service #开机启动redis服务器
systemctl disable redis.service #开机禁用redis服务器
方式二、安装包安装
1. 获取redis安装包资源
有安装包就不用下载了
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2. 解压
tar xzvf redis-4.0.8.tar.gz
3. 安装
cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis
4. 移动配置文件到安装目录下
cd ../
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc
5. 配置Redis为后台启动
vi /usr/local/redis/etc/redis.conf //将daemonizeno 改成daemonize yes
6. 将Redis加入到开机启动
vi /etc/rc.local
在里面添加内容:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
(意思就是开机调用这段开启redis的命令)
7. 开启Redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
可以新建redisStart.sh脚本 放入上面的命令名授权
chmod 777 redisStart.sh
8 关闭Redis
/usr/local/redis/bin/redis-server -h 127.0.0.1 -p 6379 shutdown
# 慎用 kill -9 kid
最后
好了,以上就是本篇的内容,主要是对Redis的入门与安装的讲解,后续我们深入了解Redis的各项功能。