设为首页 收藏本站
查看: 1228|回复: 0

[经验分享] Redis缓存服务搭建(单台服务器)

[复制链接]
累计签到:7 天
连续签到:1 天
发表于 2016-11-15 14:01:11 | 显示全部楼层 |阅读模式
  • Redis简介
NoSQL,Not Only SQL,是非关系型的数据库。传统的关系数据库不能满足超大规模和高并发的应用。

是以Key-Value的形式存储,(例如JSON,XML),不一定遵循传统数据库的一些基本要求,比如SQL标准、ACID属性(Atomicity/ Consistency/Isolation/Durability)、表结构等。主要有以下的特点:非关系型的、分步式的、开源的、水平可扩展的(指能够连接多个软硬件的特性)。

       NoSQL适用场景:

              1)、High performance - 对数据高并发读写

              2)、Huge storage - 对海量数据的高效率存储和访问

              3)、High scalability && HighAvailability - 对数据的高可扩展性和高可用性

       开源的NoSQL数据库:Redis, MongoDB, Cassandra…...

Redis是一个Key-Value存储系统。它支持存储的value类型有:string(字符串),list(链表), set(无序集合), zset(sorted set有序集合)和hash,也可以把redis看成一个数据结构服务器。这些数据类型都支持pust/pop、add/remove及取交集、并集和差集运算,Redis支持各种不同方式的排序。数据都是缓存在内存中的,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并实现了master-slave(主从)同步。

Redis提供的API语言包括C、C++、C#、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Go、Tcl等。

使用Redis:新浪微博,200+ Server、400 port、4G data.

使用方式:与memcache相同

1. 应用程序直接访问Redis数据库;

2. 应用程序直接访问Redis,只有当访问Redis失败时才访问MySQL

       应用场合:

              1. 取最新N个数据的操作

              2. 排行榜应用

              3. 需要精确设定过期时间的应用

              4. 计数器应用

              5. Uniq操作,获取某段时间所有数据排重值

              6. 实时系统,反垃圾系统

              7. Pub/Sub构建实时消息系统

              8. 构建队列系统

              9. 缓存

              10. 存储微博关注关系

       Redis有库无表无字段无行列。MongoDB有库有集合(对应于Mysql中的表)

  • Redis安装
官网:http://redis.io

NO.1:
官网下载redis源码包redis-3.2.0.tar.gz
  • tar -zxvf redis-3.2.0.tar.gz  #解压源码包
  • cd redis-3.2.0
  • make
  • cd src
  • make install
  • 注:make完成后,会产生可执行文件
  • redis-serverredis服务器的启动程序
  • redis-cliredis命令行工具,也可为客户端
  • redis-benchmarkredis性能测试工具(读写)

NO.2:
启动redis服务
  • /usr/local/src/redis-3.2.0/src/redis-server /usr/local/src/redis-3.2.0/redis.conf  #加载配置文件启动redis,默认不是后台运行,请在配置文件中修改

停止redis服务
  • /usr/local/src/redis-3.2.0/src/redis-cli shutdown  #关闭redis服务

测试redis服务
  • /usr/local/src/redis-3.2.0/src/redis-cli  #启动客户端
  • set keytest valuetest  #设定键值keytest的数值是valuetest
  • get keytest  #获取keytest键值的数值

NO.3:
修复redis未授权访问漏洞方法


  • 编辑redis.conf配置文件
  • redis.conf 文件中找到 “# bind 127.0.0.1 ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问Redis
  • redis.conf 中找到“requirepass”字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。
  • 请以较低权限账号运行Redis服务,且禁用该账号的登录权限。另外可以限制攻击者往敏感写入文件,但是Redis数据还是能被黑客访问到,或者被黑客恶意删除。

设置调整防火墙策略

  • 如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。

设定密码后访问方式

  • redis-cli -h 127.0.0.1 -p 6379 -a gh001  #-h指定主机;-p指定端口;-a指定密码




  • Redis配置文件参数(重要)
  • #是否以后台守护进程运行,默认为no, 取值yes, no   
  • daemonize no                     
  •   
  • #pid文件存放路径  
  • pidfile /var/run/redis.pid      
  •   
  • #配置redis端口,默认6379  
  • port 6379                     
  •   
  • #绑定ip。默认绑定所有本机ip,一般用在服务器多ip下,可以只监听内网服务器ip,保证服务安全  
  • bind 127.0.0.1               
  •   
  • #sock文件   
  • unixsocket /tmp/redis.sock   
  •   
  • #客户端超时时间,单位秒   
  • timeout 300                  
  •   
  • #log级别,支持四个级别,debug,notice,verbose,warning   
  • loglevel verbose            
  •   
  • #log文件路径  
  • logfile                     
  •   
  • #log输出到标准设备,logs不写文件,输出到空设备,/deb/null  
  • logfile stdout                 
  •   
  • #保存快照的频率,在多长时间内执行一定数量的写操作时,保存快照的频率,可以设置多个条件。如果都注释掉,则不做内存数据持久化。如果只是把redis只用作cache,不开启持久化功能  
  • save <seconds> <changes>   
  • save 900 1   
  •   
  • #是否使用压缩  
  • rdbcompression              
  •   
  • #快照数据库名称   
  • dbfilename                 
  •   
  • #数据库存放路径   
  • dir                        
  •   
  • #redis主从 做法  在从上填上主的IP和端口号 主上不用做任何设置  
  • slaveof <masterip> <masterport>     
  •   
  • #主库服务器口令,如果主服务器未打开requirepass,则不需要此项  
  • masterauth <master-password>      
  •   
  • #在master服务器挂掉或者同步失败时,从服务器是否继续提供服务  
  • slave-serve-stale-data yes           
  •   
  • #设置redis服务密码,如果开启,则客户端连接时需要 -a  指定密码,否则操作会提示无权限  
  • requirepass foobared                 
  •   
  • #命令改名,相当于linux  alias,可以用改功能屏蔽一些危险命令  
  • rename-command                     
  •   
  • #最大连接数;0 表示不限制  
  • maxclients 128                     
  •   
  • #最大使用内存(分配的内存),推荐生产环境下做相应调整,我们用的是只用来做高速缓存,限制2G。默认情况下,redis会占用可用的所有内存  
  • maxmemory <bytes>                  
  •   
  • #过期策略,提供六种策略   
  • maxmemory-policy volatile-lru     
  • volatile-lru    //删除过期和lru key(默认值)   
  • allkeys-lru     //删除lru算法的key   
  • volatile-random //随机删除即将过期key   
  • allkeys->random //随机删除   
  • volatile-ttl    //删除即将过期的   
  • noeviction      //永不过期,返回错误   
  •   
  • #是否开启appendonlylog,开启的话每次写操作会记一条log。相当于mysql的binlog;不同的是,每次redis启动都会读此文件构建完整数据。即使删除rdb文件,数据也是安全的   
  • appendonly      
  •   
  • #日志文件的名称,默认appendonly.aof  
  • appendfilename appendonly.aof     
  •   
  • #异步写append file 的策略。类似mysql事物log写方式。三种  
  • appendfsync                        
  • appendfsync always               //同步,每次写都要flush到磁盘,安全,速度慢。   
  • appendfsync everysec             //每秒写(默认值,推荐值)同mysql   
  • appendfsync no                   //交给操作系统去做flush的动作   
  •   
  • #虚拟内存开关   
  • vm-enabled no                 
  •   
  • #swap文件,不同redis swap文件不能共享。而且生产环境下,不建议放在tmp目录  
  • vm-swap-file /tmp/redis.swap      
  •   
  • #vm大小限制。0:不限制,建议60-80% 可用内存大小  
  • vm-max-memory 0                  
  •   
  • #根据缓存内容大小调整,默认32字节  
  • vm-page-size 32                  
  •   
  • #page数。每 8 page,会占用1字节内存。vm-page-size * vm-pages 等于 swap 文件大小  
  • vm-pages 134217728               
  •   
  • #vm 最大io线程数。注意: 0 标志禁止使用vm   
  • vm-max-threads 4






评分

参与人数 1金币 +2 收起 理由
231232133 + 2 很给力!

查看全部评分


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-300699-1-1.html 上篇帖子: RAP可视化接口管理平台 下篇帖子: CentOS7+rsync+sersync实现数据实时同步 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表