redis基本介绍搭建篇

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

[[email protected] ~]# cd /usr/local/src/
[[email protected] src]#  wget  -q http://download.redis.io/releases/redis-3.2.8.tar.gz  #-q隐藏
[[email protected] src]# tar xf redis-3.2.8.tar.gz
[[email protected] src]# cd redis-3.2.8/
[[email protected] src]# make
[[email protected] src]# make PREFIX=/usr/local/redis01  install
[[email protected] 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
[[email protected] redis01]# echo "export PATH=/usr/local/redis01/bin:$PATH" >>/etc/profile
[[email protected] redis01]# source /etc/profile
[[email protected] redis01]# redis-server &  #启动
[[email protected] redis01]# redis-cli       #进入到客户端
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> exit
[[email protected] redis01]# redis-cli shutdown #关闭

2.1 指定配置文件启动  

[[email protected] redis01]# pwd
/usr/local/redis01
[[email protected] redis01]# mkdir -p conf
[[email protected] redis01]# cp /usr/local/src/redis-3.2.8/redis.conf conf/
[[email protected] 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 127.0.0.1   #绑定地址,如外网需要连接,设置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        #是否激活重置哈希
时间: 2024-07-30 13:43:49

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

1.22 redis集群介绍21.23/21.24 redis集群搭建配置21.25 redis集群

21.22 redis集群介绍多个redis节点网络互联,数据共享所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为.支持在线增加.删除节点客户端可以连任何一个主节点进行读写 21.23/21.24 redis集群搭建配置场景设置:两台机器,分别开启三个Redis服务(端口)A机器上三个端口7000,7002,7004,全部为主B

redis集群介绍、redis集群搭建配置、redis集群操作

一:redis集群介绍 多个redis节点网络互联,数据共享所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为.支持在线增加.删除节点客户端可以连任何一个主节点进行读写 二:redis集群搭建配置 场景设置:两台机器,分别开启三个Redis服务(端口)A机器上三个端口7000,7002,7004,全部为主B机器上三个端口7001,

redis集群搭建及注意事项

上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出了6台机器了,然后在以这6个实例组建redis集群就可以了. 前提:redis已经安装,目录为/usr/local/redis-4.0.1 redis集群是用的ruby脚本,所以要想执行该脚本,需要ruby环境..对应redis的源码src目录下的redis-trib.rb,redis-trib.r

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

转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展. 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的Cpu的处理速度,内存大小,

Redis集群搭建最佳实践

要搭建Redis集群,首先得考虑下面的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展. 在集群的概念出现之前,我们使用的硬件资源都是纵向扩展的,但是纵向扩展很快就会达到一个极限,单台机器的Cpu的处理速度,内存大 小,硬盘大小没办法一直满足需求,而且机器纵向扩展的成本是相当高的.集群的出现就是能够让多台机器像一台机器一样工作,实现了资源的横向扩展. Redis是内存型数

转:redis集群搭建及使用

转自:http://www.cnblogs.com/huangxincheng/p/5615037.html 现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境 曾今也遭遇到这种情况,导致redis内存不够挂掉的情况,当然这些都是我们及其不能容忍的,第一个必须要做到高可靠,其次才是高性能,好了,下面我来 逐一搭建一下. 一:Redis集群搭建 1. 下载 首先去官网下载较新的3.2.0版本,下载方式还是

redis+mysql架构搭建

redis+mysql框架搭建 redis是一个key-value存储系统.和memcached类似,不过redis支持的value类型更多,主要有:string(字符串).list(链表).set(集合).zset(有序集合)和hash(哈希类型).redis和memcached一样,为了保证效率,都是把数据缓存在内存中.区别是redis会周期性的把更新的数据写入磁盘或者把修改的操作写入追加的记录文件,并且在此基础上实现master-slave主从同步. 简单的比较redis和memcache

Redis 集群搭建详细指南

先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司!为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛,「大」总有大的好.当然,如果你要有能力找一个胸大个子高就更完美了. Redis 集群简介 Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存.Redis 在3.0版本前只支持单实例模式,虽然支持主从模式.哨兵模式部署来解决单点故障,但是现在互

一步一步构建手机Web开发——环境搭建篇

从2007年,乔布斯带来了第一代Iphone手机,整个移动互联网发生天翻地覆的变化,也同时证明了乔布斯的一句名言:“再一次改变世界”. 在当今的移动互联网,手机App居多,很多App对移动设备的要求也越来越高,当然,土豪就可以经常更新换代.我们这群屌丝只能望梅止渴.为了解决少部分由于硬件或者软件引起的问题,我们将App迁移到浏览器上,也就是人们常说的WebApp,WebApp相对与手机App客户端有以下优点: 1.免安装,一个浏览器就可以搞定. 2.不需要繁忙的迭代更新. 3.不需要担心存储不足