1.redis基本介绍

1.1 redis介绍

  • Redis属于非关系型数据库和Memcached类似,redis也是一个key-value型存储系统。
  • 但redis支持的存储value类型相对更多,包括string(字符串)、list(列表)、set(集合)和zset(有序集合)等。
  • 这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,redis的数据都是缓存在内存中。
  • 区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在基础上实现了master-slave(主从)同步。

1.2 Redis和Memecache的不同

  • 存储方式:memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小, Redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有RDB快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)
  • 数据支持类型:redis在数据支持上要比memecache多的多。
  • 使用底层模型不同:新版本的redis直接自己构建了VM 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
  • 运行环境不同:redis目前官方只支持Linux 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上

总结:对于两者的选择还是要看具体的应用场景,如果需要缓存的数据只是key-value这样简单的结构时,我在项目里还是采用memcache,它也足够的稳定可靠。如果涉及到存储,排序等一系列复杂的操作时,毫无疑问选择redis。

1.3 redis应用场景

redis最佳使用场景是全部数据in-memory
redis更多场景最为memcached的替代品来使用
需要除key/value之外的更多数据类型支持时,使用redis更合适
当存储的数据不能被剔除时,使用redis更合适

1.4 Redis支持的键值类型

  • String 字符串类型
  • Hash散列类型
  • List列表类型
  • Set集合类型
  • Zset有序集合类型

2. 安装redis

[root@redis01 ~]# cd /usr/local/src/
[root@redis01 src]# wget -q http://download.redis.io/releases/redis-3.2.8.tar.gz #-q隐藏
[root@redis01 src]# tar xf redis-3.2.8.tar.gz
[root@redis01 src]# cd redis-3.2.8/
[root@redis01 src]# make
[root@redis01 src]# make PREFIX=/usr/local/redis01 install
[root@redis01 redis01]# tree /usr/local/redis01/
/usr/local/redis01/
└── bin
├── redis-benchmark #redis性能读写测试工具
├── redis-check-aof #对更新日志appenonly.aof检查,类似于mysql binlog
├── redis-check-rdb #用于本地数据库rdb文件的检查
├── redis-cli #redis命令行客户端操作工具
├── redis-sentinel -> redis-server
└── redis-server #redis服务器daemon启动程序 1 directory, 6 files
[root@redis01 redis01]# echo "export PATH=/usr/local/redis01/bin:$PATH" >>/etc/profile
[root@redis01 redis01]# source /etc/profile
[root@redis01 redis01]# redis-server & #启动
[root@redis01 redis01]# redis-cli #进入到客户端
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> exit
[root@redis01 redis01]# redis-cli shutdown #关闭

2.1 指定配置文件启动  

[root@redis01 redis01]# pwd
/usr/local/redis01
[root@redis01 redis01]# mkdir -p conf
[root@redis01 redis01]# cp /usr/local/src/redis-3.2.8/redis.conf conf/
[root@redis01 redis01]# redis-server /usr/local/redis01/conf/redis.conf &

解决启动报warning信息:

可选值:0、1、2

0  内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1 内核允许分配所有的物理内存,而不管当前的内存状态如何。
2 内核允许分配超过所有物理内存和交换空间总和的内存

三种设置方法:

  1. 编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 生效
  2. sysctl vm.overcommit_memory=1
  3. echo 1 > /proc/sys/vm/overcommit_memory

2.2 redis配置文件介绍

daemonize yes #是否以后台进程运行
pidfile /var/run/redis/redis-server.pid #pid文件位置
port 6379#监听端口
bind 0.0.0.0 #绑定地址,如外网需要连接,设置0.0.0.0 空格分隔
timeout 300 #连接超时时间,单位秒
loglevel notice #日志级别,分别有:
# debug :适用于开发和测试
# verbose :更详细信息
# notice :适用于生产环境
# warning :只记录警告或错误信息
logfile /var/log/redis/redis-server.log #日志文件位置
syslog-enabled no #是否将日志输出到系统日志
databases 16#设置数据库数量,默认数据库为0
############### 快照方式 ###############
save 900 1 #在900s(15m)之后,至少有1个key发生变化,则快照
save 300 10 #在300s(5m)之后,至少有10个key发生变化,则快照
save 60 10000 #在60s(1m)之后,至少有1000个key发生变化,则快照
rdbcompression yes #dump时是否压缩数据
dir /var/lib/redis #数据库(dump.rdb)文件存放目录
############### 主从复制 ###############
slaveof <masterip> <masterport> #主从复制使用,用于本机redis作为slave去连接主redis
masterauth <master-password> #当master设置密码认证,slave用此选项指定master认证密码
slave-serve-stale-data yes #当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress"错误信息。但INFO和SLAVEOF命令除外。
############### 安全 ###############
requirepass foobared #配置redis连接认证密码
############### 限制 ###############
maxclients 128#设置最大连接数,0为不限制
maxmemory <bytes>#内存清理策略,如果达到此值,将采取以下动作:
# volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
# allkeys-lru :删除不经常使用的key
# volatile-random :随机删除即将过期的key
# allkeys-random :随机删除一个key
# volatile-ttl :删除即将过期的key
# noeviction :不过期,写操作返回报错
maxmemory-policy volatile-lru#如果达到maxmemory值,采用此策略
maxmemory-samples 3 #默认随机选择3个key,从中淘汰最不经常用的
############### 附加模式 ###############
appendonly no #AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘
appendfilename appendonly.aof #指定更新日志文件名
# AOF持久化三种同步策略:
# appendfsync always #每次有数据发生变化时都会写入appendonly.aof
# appendfsync everysec #默认方式,每秒同步一次到appendonly.aof
# appendfsync no #不同步,数据不会持久化
no-appendfsync-on-rewrite no #当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。
############### 虚拟内存 ###############
vm-enabled no #是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存
vm-swap-file /var/lib/redis/redis.swap #虚拟内存文件位置
vm-max-memory 0 #redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
vm-page-size 32 #每个页面的大小为32字节
vm-pages 134217728 #设置swap文件中页面数量
vm-max-threads 4 #访问swap文件的线程数
############### 高级配置 ###############
hash-max-zipmap-entries 512 #哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间
hash-max-zipmap-value 64 #哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间
list-max-ziplist-entries 512 #list数据类型多少节点以下会采用去指针的紧凑存储格式
list-max-ziplist-value 64 #list数据类型节点值大小小于多少字节会采用紧凑存储格式
set-max-intset-entries 512 #set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储
activerehashing yes #是否激活重置哈希

2.3 加入到系统服务里面

[root@lmosl system]# pwd
/usr/lib/systemd/system
[root@lmosl system]# cat redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target [Service]
ExecStart=/usr/bin/redis-server /etc/redis.conf
ExecStop=/usr/libexec/redis-shutdown
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755 [Install]
WantedBy=multi-user.target

  

redis基本介绍搭建篇的更多相关文章

  1. Redis Cluster 介绍与搭建

    转:http://blog.csdn.net/men_wen/article/details/72853078 Redis Cluster 介绍与搭建 1. Redis Cluster介绍 Redis ...

  2. Redis安装介绍

    Redis安装介绍 一.Linux版本及配置 1.  Linux版本:Red Hat Enterprise Linux 6虚拟机 2.  配置: 内存:1G:CPU:1核:硬盘:20G 二.Redis ...

  3. Redis全面介绍

    最近重新认识了一下Redis,借着这个机会,也整理一篇算是比较详尽和全面的文章吧.   缓存 缓存就是数据交换的缓冲区(称作Cache)——摘自百度百科.无论是在计算机硬件体系结构还是软件体系结构中, ...

  4. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  5. Redis集群搭建最佳实践

    要搭建Redis集群.首先得考虑以下的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的事实上也就是集群搭建的目的.全部的集群主要都是为了解决一个 ...

  6. 支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)

    上篇文章<支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)>介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建.配置,运维.扩容等具体操作 集群搭建 ...

  7. 快速搭建ELK7.5版本的日志分析系统--搭建篇

    title: 快速搭建ELK7.5版本的日志分析系统--搭建篇 一.ELK安装部署 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic ...

  8. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  9. Redis学习——环境搭建以及基础命令使用

    0. 前言: 这篇文章旨在对redis环境的搭建以及对redis有个大概的认识. 一.redis搭建: 环境:ubuntu 14 软件包:redis-3.0.3.tar.gz 安装步骤: 1. 首先解 ...

随机推荐

  1. 4.jmeter在线并发的怎样设置

    4.1Jmeter 快速入门教程(一) - 认识jmeter和google插件 4.2Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail 4.3Jmeter 快速入门教程(三- ...

  2. js获取下拉框的value值

    var Resultstr=""; var param = { action: "MoneyList" };//参数拼接 $.ajax({ type: &quo ...

  3. Vue 创建组件的两种方法

    地址:https://blog.csdn.net/cofecode/article/details/74634301 创建组件的两种方法 1.全局注册 2.局部注册 var child=Vue.ext ...

  4. 百度分布式配置管理平台-Disconf

    Disconf介绍 全称:Distributed Configuration Management Platform,即分布式配置管理平台. Disconf专注于各种分布式系统配置管理的通用组件和通用 ...

  5. js 模拟window.open 打开新窗口

    为什么要去模拟window.open() 打开一个 新的窗口呢,因为有些浏览器默认会拦截 window.open, 当需要函数中打开新窗口时,接可以使用a标签去模拟打开. /** * a模拟windo ...

  6. ArcGis基础——相接面制造指定距离的分隔带

    回家,出发前夜,看完电影吃晚饭回到住处已近十一点,和同事扯了一会儿淡,正准备去睡觉,这哥们儿突然想起一个问题: 如何把相接的面搞出一个20cm的分隔带?因为两区划定项目数据质检要求不同的地块图斑间应有 ...

  7. linux100day(day8)--shell监控脚本练习

    这是一个大型的监控脚本,方便于查看硬盘,网络,负载,内核版本等系统信息. 本脚本来自于github的atarallo,我对脚本做出了改编和一些注释,尽量让新手也能理解,这个脚本逻辑清楚简单,适合用于练 ...

  8. go语言从例子开始之Example19.接口

    接口 是方法特征的命名集合. Example: package main import "fmt" //让方法,实现api这个接口. type api interface{ get ...

  9. [几何]计算不规则多边形的面积、中心、重心(Android,转)

    转自:[几何]计算不规则多边形的面积.中心.重心 最近项目用到:在不规则多边形的中心点加一个图标.(e.g: xx地区发生暴雪,暴雪区域是多边形,给多边形中心加一个暴雪的图标) 之前的设计是,计算不规 ...

  10. SSH出错

    [root@node01 ~]# ssh node02 ssh_exchange_identification: Connection closed by remote host 修改连接数无效 [r ...