Redis初步了解

一、Redis

1、介绍

  • REmote DIctionary Server:数据结构服务器,k/v,数据结构;
  • Redis 是一个开源(BSD许可)的,内存存储、数据结构存储系统,它可以用作数据库、缓存和消息中间件(消息队列)。
  • 它支持的数据结构:字符串、列表(数组)、hashes(关联数组)、集合、有序集合、bitmaps、hyperloglogs、空间索引;
  • 内建的复制功能、Lua scripting(著名的脚本编程语言,容易内嵌入其他语言)、LRU、事务、持久存储、高可用(Sentinel,Redis Cluster)

2、redis程序

  • 最新版程序,可以选择官网下载,编译安装。
  • 也可以使用yum epel仓库,yum install redis
  • 配置文件:/etc/redis.conf
  • 服务端-主程序:/usr/bin/redis-server 默认端口 TCP:6379
  • 客户端:/usr/bin/redis-cli
  • Unit File:/usr/lib/systemd/system/redis.service
  • 数据目录:/var/lib/redis
  • Redis性能测试工具:redis-benchmark
  • AOF文件修复工具:redis-check-aof
  • RDB文件检查工具:redis-check-rdb
  • Sentinel服务器:redis-sentinel

3、配置

  • Redis.conf 配置文件分为:通用基本配置项、网络配置项、持久化相关配置、复制相关的配置、安全相关配置、Limit相关的配置、SlowLog相关的配置、INCLUDES、Advanced配置
  • 通用配置

    • daemonize yes 启用后台守护进程运行模式
    • pidfile /PATH/redis.pid redis启动后的进程ID保存文件
    • loglevel notice 指定记录服务器信息等级
    • logfile “” 指定日志文件,默认是使用系统的标准输出
    • databases 16 设置数据库的数量,默认启动时使用0 号数据库
  • 网络配置
    • port 指定使用端口号,默认6379
    • bind 0.0.0.0 监听指定IP地址 默认本地回环地址
    • timeout N 客户端空闲N秒后断开连接,参数0表示不启用
    • tcp-backlog 511 后援队列,达到最大并发连接数后,服务器还要留住多少访问请求
    • protected-mode yes 保护模式,默认启用。指定了bind,就可以关闭保护模式。如果关闭bind,就必须启用保护模式,不然没法登陆redis。
    • tcp-keepalive 300 tcp保持连接300秒
  • 安全配置
    • requirepass PASSWORD
    • rename-command <COMMAND> <NEW_CMND_NAME> 命令重命名,在AOF或Replication环境中,不推荐使用;
  • Limits
    • maxmemory <bytes> 设置给redis使用的最大内存,单位为字节
    • maxmemory-policy noeviction 选择淘汰策略
    • 如果内存使用量耗尽,淘汰策略:
      volatile-lru # 对设置了过期时间的keys,使用 LRU最近最少使用算法去淘汰。
      allkeys-lru  # 所有keys,使用LRU最近最少使用算法去淘汰。
      volatile-random  # 对设置了过期时间的keys,随机淘汰。
      allkeys-random  # 所有keys中,退机淘汰
      volatile-ttl  # 对过期时间中剩余时间多少,淘汰快到期的。
      noeviction  # 默认策略,不淘汰,如果内存已满,添加数据是报错。
    • maxmemory-samples 5 淘汰算法运行时的采样样本数
  • SlowLog相关配置
    • slowlog-log-slower-than 10000 单位微秒=0.01秒
    • sowlog-max-len 128 最终只保存128条日志;
  • ADVANCED配置
    • hash-max-ziplist-entries 512 哈希编码最大键值对 512个键值对
    • hash-max-ziplist-value 64 这些键值对里的值,最大长度64字节。
    • client-output-buffer-limit <class><hard limit><soft limit><soft seconds>
    • class:客户端种类,normal本机客户端,slave从节点客户端,pubsub消息队列客户端。
    • hard limit 硬限制,最大多少空间。
    • soft limit 软限制,可以在短时间内超过。
    • soft seconds 超出软限制时,超出的那部分可使用时长。
      client-output-buffer-limit normal 0 0 0
      client-output-buffer-limit slave 256mb 64mb 60
      client-output-buffer-limit pubsub 32mb 8mb 60

二、Redis命令

1、分组命令

  • @strings 只处理值为字符串的命令组

    • SET:设置一个key的value值
    • GET:返回key的value值,key不存在则返回nil(空);
    • EXISTS:查询key是否存在;返回1 key存在,0 key不存在
    • INCR:对key中的数值执行加1操作。
    • DECR:返回一个数字,减少之后的value值
    • SETNX:当key不存在是,设置一个键的值,当key存在时,则不做动作。
    • SETEX:设置 key 对应的 value 的过期时间
    • INCRBYFLOAT:指定key为浮点数值,并增长浮点数值
    • MGET:获取多个key的值
    • MSET:设置多个key的值
  • @lists 处理列表的命令组
    • LPUSH:从列表左边开始插入元素
    • RPUSH:从列表右边开始插入元素
    • LPOP:从左边弹出元素
    • RPOP:从右边弹出元素
    • LPUSHX:判断列表是否存在,存在则从左边插入元素
    • RPUSHX:判断列表是否存在,存在则从右边插入元素
    • LRANGE:返回指定下标的key的值
    • LINDEX:返回数组列表中,指定的下标的元素值。0为第一个元素
    • LSET:设置列表里一个元素的值
  • Server相关命令
    • CLIENT GETNAME:获取客户端连接的名字
    • CLIENT SETNAME:设置客户端连接的名字
    • CLIENT LIST:列出所有客户端连接
    • CLIENT KILL:关闭指定连接,根据这些条件关闭;[ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]
    • CLIENT PAUSE:暂停某个客户端连接,也可以设着暂停时间
    • SHUTDOWN NOSAVE强制关闭,类似直接关电源;SAVE内存数据同步到磁盘上,安全关闭
    • INFO:服务器状态信息查看;分为多个secion;
    • 在程序中修改参数
    • CONFIG GET 查看指定配置项的参数
    • CONFIG RESETSTAT INFO中的计数器全部重置,重新开始计数
    • CONFIG REWRITE 重写配置文件,保存在配置文件中
    • CONFIG SET 修改配置项参数;重启redis,不保存
更多命令组,命令介绍可到官网查询Redis官网

2、redis-cli命令

  • Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]

    -h HOST, 127.0.0.1
    -p PORT, 6379/tcp
    -a PASSWORD
    -n DBID 0-15

  • 与Connection相关命令:

    help @connection
    AUTH <password>
    ECHO <message>
    PING
    QUIT
    SELECT dbid

  • 清空数据库:

    FLUSHDB:Remove all keys from the current database 清空当前数据库;
    FLUSHALL:Remove all keys from all databases 清空所有数据库;

三、Redis持久化

  • RDB

    • snapshotting, 二进制格式;按事先定制的策略,周期性地将数据从内存同步至磁盘;数据文件默认为dump.rdb;
    • 客户端显式使用SAVE或BGSAVE命令来手动启动快照保存机制;
    • SAVE:同步,即在主线程中保存快照,此时会阻塞所有客户端请求;
    • BGSAVE:异步;backgroud
    • RDB相关的snapshotting配置:
      *save <seconds> <changes>
      save 900 1
      save 300 10
      save 60 10000
      save 5 200000
    • 表示:三个策略满足其中任意一个均会触发SNAPSHOTTING操作;
    • 900s内至少有一个key有变化
    • 300s内至少有10个key有变化
    • 60s内至少有1W个key发生变化
    • 5s内至少变化20W个key发生变化
    • stop-writes-on-bgsave-error yes
    • dump快照操作出现错误时,是否禁止新的写入操作请求;
    • rdbcompression yes 是否对快照进行压缩,只要服务器有闲余性能,就可以压缩,节省磁盘空间
    • rdbchecksum yes 压缩完是否校验,检查文件是否完整;占用CPU
    • dbfilename dump.rdb:指定rdb文件名
    • *dir /var/lib/redis:rdb文件的存储路径
  • AOF:Append Only File, fsync
    • 记录每次写操作至指定的文件尾部实现的持久化;当redis重启时,可通过重新执行文件中的命令在内存中重建出数据库;
    • BGREWRITEAOF:AOF文件重写;
    • 不会读取正在使用AOF文件,而是通过将内存中的数据以命令的方式保存至临时文件中,完成之后替换原来的AOF文件;
  • AOF相关的配置
    • *appendonly no:默认不启用AOF的
    • appendfilename "appendonly.aof" :文件名
    • *appendfsync:追加同步的三种模式
    • no:redis不执行主动同步操作,而是OS进行;
    • everysec:每秒一次;
    • always:每语句一次;
    • no-appendfsync-on-rewrite no
    • 是否在后台执行aof重写期间不调用fsync,默认为no,表示调用;
    • auto-aof-rewrite-percentage 100:变化的内容所占空间的增长量超过100%
    • auto-aof-rewrite-min-size 64mb 增长量不能超过64mb
    • 上述两个条件同时满足时,方会触发重写AOF;与上次aof文件大小相比,其增长量超过100%,且大小不少于64MB;
    • aof-load-truncated yes:修剪文件,Redis启动加载aof文件,如果发现末尾命令不完整则自动截掉,成功加载前面正确的数据。如果设置为no,遇到此类情况,Redis启动失败,用redis-check-aof 工具手工修复。
    • 注意:持久机制本身不能取代备份;应该制订备份策略,对redis库定期备份;
  • RDB与AOF同时启用:

    (1) BGSAVE和BGREWRITEAOF不会同时进行;
    (2) Redis服务器启动时用持久化的数据文件恢复数据,会优先使用AOF;

原文地址:http://blog.51cto.com/13120511/2090014

时间: 2024-10-12 14:03:58

Redis初步了解的相关文章

小记——Redis初步使用

首先,以前我对Redis一直是有所耳闻,不过一直没有自己去真正使用过.这次 由于自己的业务功能涉及到需要使用NoSQL的,所以针对Redis写一个小Demo练习一下. 虽然是领导指定使用的Redis,不过不得不说Redis还是有其优势的. 一.Redis简介 Redis是一个开源的,使用C语言编写,面向"键/值"对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.Redis纯粹为应用而产生,它是一个高性能的key-value数据库,并且提供了多种语言的

redis初步入门

http://blog.csdn.net/u014419512/article/details/25693425 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 环境 安装 启动 调试 java调用 后台进程 更多资料 环境 RHLinux-6.4-64-EN, 红帽6.4 64位,英文正式发布版 安装 安装很简单,先下载redis的压缩包,下载地址见这里,然后拷贝到你的linux机器,接着执行下面的命令. 1 2 3 $ tar xzf redis-2.6.14.tar

Redis初步

Redis目录下文件: redis-server.exe:服务程序 redis-check-dump.exe:本地数据库检查 redis-check-aof.exe:更新日志检查 redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具). 通过cmd启动Redis服务,可以配置conf Windows下要启动Redis需要编译好的 c:\目录>redis-server.exe redis.conf 启动后

Ehcache Memcache Redis 初步(二)

Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apache 2.0  license).充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中. 什么特色? 1.  够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency

redis 初步使用

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.2</version> </dependency> import org.springframework.beans.factory.annotation.Value; import org.springframework.conte

NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一下神马是主从复制架构? 1.1 源于关系数据库的读写分离 随着网站业务的不断发展,用户量的不断增加,数据量也成倍的增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成

对redis数据库的初步认识

由于之前接触的都是关系型数据库,对于非关系型数据库总是不了解,趁着外出做项目的机会,正好初步认识了redis数据库 redis分为存储分为几个存储的数据类型 string类型,hash类型,list链表类型,set集合类型,sorted set类型 对应的操作也是不一样的,所以最常用的工作就是: keys * 查询所有的键值 type 查询键值的类型 string建立的时候 即存储的是key-value的值对 hash 建立的是表名-key-value的值对,hash 特别适合用于存储对象.相较

【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一下神马是主从复制架构? 1.1 源于关系数据库的读写分离 随着网站业务的不断发展,用户量的不断增加,数据量也成倍的增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成

Redis的Python客户端redis-py的初步使用

1. 安装 sudo pip install redis sudo pip install hiredis Parser可以控制如何解析redis响应的内容.redis-py包含两个Parser类,PythonParser和HiredisParser.默认,如果已经安装了hiredis模块,redis-py会使用HiredisParser,否则会使用PythonParser.HiredisParser是C编写的,由redis核心团队维护,性能要比PythonParser提高10倍以上,所以推荐使