本文共 3445 字,大约阅读时间需要 11 分钟。
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。
Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
Redis的五个常见使用场景
1、会话缓存(Session Cache) 最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗? 幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。 2、全页缓存(FPC) 除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。 再次以Magento为例,Magento提供一个插件来使用Redis作为全页缓存后端。 此外,对WordPress的用户来说,Pantheon有一个非常好的插件 wp-redis, 这个插件能帮助你以最快速度加载你曾浏览过的页面。 3、队列(秒杀,抢购,12306)list数据类型的使用 Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。 如果你快速的在Google中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用Redis创建非常好的后端工具,以满足各种队列需求。例如,Celery有一个后台就是使用Redis作为broker,你可以从这里去查看。 4、排行榜/计数器(set数据类型的使用) Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可: 当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行: ZRANGE user_scores 0 10 WITHSCORES Agora Games就是一个很好的例子,用Ruby实现的,它的排行榜就是使用Redis来存储数据的,你可以在这里看到。 5、发布/订阅 最后(但肯定不是最不重要的)是Redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统!(不,这是真的,你可以去核实)。 Redis提供的所有特性中,我感觉这个是喜欢的人最少的一个,虽然它为用户提供如果此多功能。Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
接下来是搭建过程
IP | 服务 |
---|---|
192.168.0.103 | redis主 |
192.168.0.101 | redis从 |
redis下载地址: https://redis.io/download
一、下载redis包编译安装
[root@k8s-master bin]# wget https://download.redis.io/releases/redis-6.2.4.tar.gz[root@k8s-master bin]# tar -zxf redis-6.2.4.tar.gz -C /usr/local/[root@k8s-master bin]# cd /usr/local/redis-6.2.4/[root@k8s-master redis-6.2.4]# make && make install PREFIX=/usr/local/redis
二、创建主配置文件存放目录
[root@k8s-node2 bin]# mkdir /usr/local/redis/etc[root@k8s-node2 bin]# cp -a /usr/local/redis-6.2.4/redis.conf /usr/local/redis/etc/
三、启动redis-server
[root@k8s-node2 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 启动成功,这是redis运行界面,在这个界面可以看到对redis的所有操作。但下面有一个WARING,这里的告警再说当前的TCP内核文件里配置的连接数较小,因为redis的连接数会超过当前的值,如有需要,可以将值设置成1024或2048,如果是测试环境可以设置成511。
优化redis,修改TCP内核文件 先Ctrl+C结束当前前台运行服务,之后修改文件
[root@k8s-node2 etc]# echo "511" > /proc/sys/net/core/somaxconn
修改后启动就不会出现WARING
当前是前台工作,会影响用户对服务器的其他操作,那咱们可以通过redis配置文件把前台服务改成后台。当然也可以通过
在启动服务命令后面添加&也是可以。
[root@k8s-node2 etc]# vim /usr/local/redis/etc/redis.conf重新启动redis就会在后台运行
[root@k8s-node2 etc]# pkill redis[root@k8s-node2 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
redis搭建完毕
主服务器上不需要操作
一、只需要在当从服务器的redis配置文件中末尾添加 slaveof masterIP redis端口
[root@k8s-node2 etc]# vim /usr/local/redis/etc/redis.con
设置完成后保存并重启从服务器redis如果主服务器设置了redis密码需要在末尾再添加一行
masterauth redis密码
二、连接上从服务器查看主从连接配置信息
192.168.0.101:6379> info replicationmaster_host:192.168.0.103 #主节点的Host名称或IP地址 master_port:6379 #主节点监听的TCP端口 master_link_status:up #对master的连接(up或者down) master_last_io_seconds_ago:3 #自上次与主节点交互以来,经过的秒数 master_sync_in_progress:0 #指示主节点正在与从节点同步数
三、如果能查询到状态,则在主服务器上创建键值测试是否同步(主服务器可以读写,从服务器只能读)
[root@k8s-master bin]# ./redis-cli -h 127.0.0.1
127.0.0.1:6379> set test 123 OK 登陆从服务器查看 能查询到即可完成转载地址:http://kiqwi.baihongyu.com/