定义:

Redis is an open source, BSD licensed, advanced key-value
cache and store.
It is often referred to as a data structure server since
keys can contain stringshasheslistssets,sorted
sets
bitmaps and hyperloglogs.

下载:

http://redis.io/download

安装

tar -zxvf解压完make、make install一下

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2ltb25jaGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

配置

redis.conf

#是否以后台进程执行
daemonize yes
 
#指定后台进程的pid文件写入位置
pidfile /var/run/redis.pid
 
#监听端口,默觉得6379
port 6379
 
#仅仅接受下面绑定的IP请求,没有表示接受全部请求
bind 127.0.0.1
 
设置unix套接字,默觉得空,及不通过unix套接字来监听
# unixsocket /tmp/redis.sock
# unixsocketperm 755
 
#client空暇多长时间,关闭链接。

0表示不关闭。单位秒

timeout 5
 
# TCP keepalive.
# 假设是非零值。当失去链接时。会使用SO_KEEPALIVE发送TCP ACKs 到client。
# 这个參数有两个作用:
# 1.检測断点。
# 2.从网络中间设备来看,就是保持链接
# 在Linux上,设定的时间就是发送ACKs的周期。
# 注意:达到双倍的设定时间才会关闭链接。在其它内核上,周期依赖于内核设置。

# 一个比較合理的值为60s
tcp-keepalive 0
 
# 指定日志级别,下面记录信息依次递减
# debug用于开发/測试
# verbose没debug那么具体
# notice适用于生产线# warning仅仅记录很重要的信息
loglevel notice
 
#日志文件名,假设为stdout则输出到标准输出端,假设是以后台进程执行则不产生日志
logfile /data/logs/redis/redis.log
 
# 要想启用系统日志记录器,设置一下选项为yes
# syslog-enabled no
 
# 指明syslog身份
# syslog-ident redis
 
# 指明syslog设备。必须是一个用户或者是local0 ~ local7之中的一个
# syslog-facility local0
 
#设置数据库数目。第一个数据库编号为:0
databases 16
 
##############快照#################
 
#在什么条件下保存数据库到磁盘,条件能够有非常多个,满足不论什么一个条件都会进行快照
#在900秒之内有一次key的变化
save 900 1
#在300秒之内,有10个key的变化
save 300 10
#在60秒之内有10000个key变化
save 60 10000
 
#当持久化失败的时候,是否继续提供服务
stop-writes-on-bgsave-error yes
 
#当写入磁盘时。是否使用LZF算法压缩数据,默觉得yes
rdbcompression yes
 
#是否加入CRC64校验到每一个文件末尾--花费时间保证安全
rdbchecksum yes
 
#磁盘上数据库的保存名称
dbfilename dump.rdb
 
# Redis工作文件夹。以上数据库保存文件和AOF日志都会写入此文件夹
dir /data/redis
 
##############同步#################
 
#主从复制。当本机是slave时配置
# slaveof <masterip> <masterport>
 
#当主机须要password验证时候配置
# masterauth <master-password>
 
# 当slave和master丢失链接,或正处于同步过程中。是否响应client请求
# 设置为yes表示响应
# 设置为no,直接返回"SYNC with master in progress"(正在和主server同步中)
slave-serve-stale-data yes
 
# 设置slave是否为仅仅读。
# 注意:即使slave设置为仅仅读,也不能令其暴露在不受信任的网络环境中
slave-read-only yes
 
# 设置slave给master发送ping的时间间隔。秒
# repl-ping-slave-period 10
 
# 设置传输数据I/O,主机数据、ping响应超时时间,默认60s
# 这个时间一定要比repl-ping-slave-period大,否则会不断检測到超时
# repl-timeout 60
 
# 是否在SYNC后slave socket上禁用TCP_NODELAY?
# 假设你设置为yes。Redis会使用少量TCP报文和少量带宽发送数据给slave。
# 可是这样会在slave端出现延迟。

假设使用Linux内核的默认设置。大概40毫秒。

# 假设你设置为no,那么在slave端延迟就会降低可是同步带宽要添加。
# 默认我们是为低延迟优化的。
# 可是假设流量特别大或者主从server相距比較远。设置为yes比較合理。

repl-disable-tcp-nodelay no
 
# 设置slave优先级。默觉得100
# 当主server不能正确工作的时候,数字低的首先被提升为主server,可是0是禁用选择
slave-priority 100
 
##############安全#################
 
# 设置client连接password,由于Redis响应速度能够达到每秒100w次,所以password要特别复杂
# requirepass foobared
 
# 命令又一次命名。或者禁用。

# 重命名命令为空字符串能够禁用一些危急命令比方:FLUSHALL删除全部数据
# 须要注意的是,写入AOF文件或传送给slave的命令别名或许会引起一些问题
# rename-command CONFIG ""
 
##############限制#################
 
# 设置最多链接client数量。默觉得10000。

# 实际能够接受的请求数目为设置值减去32,这32是Redis为内部文件描写叙述符保留的
# maxclients 10000
 
# 设置最大使用内存数量。在把Redis当作LRU缓存时特别实用。

# 设置的值要比系统能使用的值要小
# 由于当启用删除算法时。slave输出缓存也要占用内存
# maxmemory <bytes>
 
#达到最大内存限制时,使用何种删除算法
# volatile-lru  使用LRU算法移除带有过期标致的key
# allkeys-lru -> 使用LRU算法移除不论什么key
# volatile-random -> 随机移除一个带有过期标致的key
# allkeys-random ->  随机移除一个key
# volatile-ttl -> 移除近期要过期的key
# noeviction -> 不删除key。当有写请求时,返回错误
#默认设置为volatile-lru
# maxmemory-policy volatile-lru
 
# LRU和最小TTL算法没有精确的实现
# 为了节省内存仅仅在一个样本范围内选择一个近期最少使用的key,能够设置这个样本大小
# maxmemory-samples 3
 
##############AO模式#################
 
# AOF和RDB持久化能够同一时候启用
# Redis启动时候会读取AOF文件,AOF文件有更好的持久化保证
appendonly no
 
# AOF的保存名称,默觉得appendonly.aof
# appendfilename appendonly.aof
 
# 设置何时写入追加日志,又三种模式
# no:表示由操作系统决定何时写入。

性能最好。但可靠性最低

# everysec:表示每秒运行一次写入。折中方案,推荐
# always:表示每次都写入磁盘。

性能最差,比上面的安全一些

appendfsync everysec
 
# 当AOF同步策略设定为alway或everysec
# 当后台存储进程(后台存储或者AOF日志后台写入)会产生非常多磁盘开销
# 某些Linux配置会使Redis由于fsync()调用产生堵塞非常久
# 如今还没有修复补丁,甚至使用不同线程进行fsync都会堵塞我们的同步write(2)调用。

# 为了缓解这个问题,使用下面选项在一个BGSAVE或BGREWRITEAOF执行的时候
# 能够阻止fsync()在主程序中被调用,
no-appendfsync-on-rewrite no
 
# AOF自己主动重写(合并命令,降低日志大小)
# 当AOF日志大小添加到一个特定比率,Redis调用BGREWRITEAOF自己主动重写日志文件
# 原理:Redis 会记录上次重写后AOF文件的文件大小。
# 假设刚启动,则记录启动时AOF大小
# 这个基本大小会用来和当前大小比較。假设当前大小比特定比率大。就会触发重写。
# 你也须要指定一个AOF须要被重写的最小值,这样会避免达到了比率。
# 可是AOF文件还非常小的情况下重写AOF文件。

# 设置为0禁用自己主动重写
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
 
##############LUA脚本#################
# Lua脚本的最大运行时间,单位毫秒
# 超时后会报错。而且计入日志
# 当一个脚本执行时间超过了最大执行时间
# 仅仅有SCRIPT KILL和 SHUTDOWN NOSAVE两个命令能够使用。
# SCRIPT KILL用于停止没有调用写命令的脚本。
# SHUTDOWN NOSAVE是唯一的一个,在脚本的写命令正在运行
# 用户又不想等待脚本的正常结束的情况下。关闭server的方法。

# 下面选项设置为0或负数就会取消脚本运行时间限制
lua-time-limit
5000
 
##############慢查询#################
 
# Redis慢查询日志记录超过设定时间的查询,且仅仅记录运行命令的时间
# 不记录I/O操作,比方:和client交互。发送回复等。
# 时间单位为微妙,1000000微妙 = 1 秒
# 设置为负数会禁用慢查询日志,设置为0会记录全部查询命令
slowlog-log-slower-than 10000
 
# 日志长度没有限制,可是会消耗内存。超过日志长度后,最旧的记录会被移除
# 使用SLOWLOG RESET命令能够回收内存
slowlog-max-len 128
 
##############高级设置###############
 
# 当有少量条目的时候,哈希使用高效内存数据结构。

最大的条目也不能超过设定的阈值。# “少量”定义例如以下:

hash-max-ziplist-entries
512
hash-max-ziplist-value
64
 
# 和哈希编码一样,少量列表也以特殊方式编码节省内存。

“少量”设定例如以下:

list-max-ziplist-entries 512
list-max-ziplist-value 64
 
# 集合仅仅在下面情况下使用特殊编码来节省内存
# -->集合所有由64位带符号10进制整数构成的字符串组成
# 以下的选项设置这个特殊集合的大小。
set-max-intset-entries
512
 
# 当有序集合的长度和元素设定为下面数字时。又特殊编码节省内存
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
 
# 哈希刷新使用每100个CPU毫秒中的1毫秒来帮助刷新主哈希表(顶级键值映射表)。

#  Redis哈希表使用延迟刷新机制。越多操作。越多刷新。

# 假设server空暇,刷新操作就不会进行,很多其它内存会被哈希表占用
# 默认每秒进行10次主字典刷新,释放内存。
# 假设你有硬性延迟需求,偶尔2毫秒的延迟无法忍受的话。设置为no
# 否则设置为yes
activerehashing yes
 
# client输出缓存限制强迫断开读取速度比較慢的client
# 有三种类型的限制
# normal -> 正茶馆你client
# slave  -> slave和 MONITOR
# pubsub -> client至少订阅了一个频道或者模式
# client输出缓存限制语法例如以下(时间单位:秒)
# client-output-buffer-limit <类别> <强制限制> <软性限制> <软性时间>
# 达到强制限制缓存大小,立马断开链接。
# 达到软性限制,仍然会有软性时间大小的链接时间
# 默认正常client无限制,仅仅有请求后,异步client数据请求速度快于它能读取数据的速度
# 订阅模式和主从client又默认限制。由于它们都接受推送。
# 强制限制和软性限制都能够设置为0来禁用这个特性
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到500。默觉得10.越大CPU消耗越大,延迟越小。
# 建议不要超过100
hz 10
 
# 当子进程重写AOF文件,下面选项开启时。AOF文件会每产生32M数据同步一次。
# 这有助于更快写入文件到磁盘避免延迟
aof-rewrite-incremental-fsync yes
 
##############包括#################
 
#引入标准模板
# include /path/to/other.conf

主从集群,加入例如以下配置

slaveof 192.168.11.176 10001

启动/停止

启动
redis-server xxxxxx/redis.conf
停止
redis-cli -n 12002 shutdown

Redis持久化

Redis的持久化方式:快照和AOF(append-only file)
快照
默认的持久化方式。将内存数据以快照方式写入文件dump.rdb,无法保证数据完整性(持久化之前出现宕机。RDB採用fork子进程完毕持久化,当数据集较大,可能会导致整个server停止服务几百毫秒)
AOF
每个收到的写命令都通过write函数追加到文件里appendonly.aof,当redis重新启动会又一次运行文件里保存的写命令重建数据库的内容。因为os会在内核缓存write所的改动。所以不可能马上写入磁盘。这就有可能导致数据丢失。通过强制写入来保证:
appendonly yes  启用aof持久化方式
appendfsync always每次收写命令马上强制写磁盘,最慢可是保证数据持久化,不推荐
appendfsync everysec 每秒写
appendfsync no依赖os。性能好。持久化没保证
aof文件比rdb大。效率慢

Jedisclient开发

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.0</version>
</dependency>

package com.chiwei.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; public class RedisClient { private static JedisPool pool = null;
private static String host = "192.168.11.176";
private static int port = 10001; static {
if (pool == null) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(500);
config.setMaxIdle(5);
config.setMaxWaitMillis(1000);
config.setTestOnBorrow(true);
config.setTestOnReturn(true);
config.setTestWhileIdle(true);
pool = new JedisPool(config, host, port);
}
} public static void returnResource(JedisPool pool, Jedis redis) {
if (redis != null) {
pool.returnResource(redis);
}
} public static String get(String key) {
String value = null;
Jedis jedis = null;
try {
jedis = pool.getResource();
value = jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
// 释放资源
pool.returnBrokenResource(jedis);
} finally {
returnResource(pool, jedis);
}
return value;
} public static void set(String key, String value) {
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set(key, value);
jedis.expire(key, 10);
} catch (Exception e) {
e.printStackTrace();
pool.returnBrokenResource(jedis);
} finally {
returnResource(pool, jedis);
}
} public static void main(String[] args) {
set("momo", "nono");
} }

欢迎留言探讨!!

【Redis】redis的安装、配置执行及Jedisclient的开发使用的更多相关文章

  1. Redis for linux安装配置之—-源码安装

    一‘redis单实例安装配置1.下载redis源码压缩包,并将其上传至服务器/usr/local2.解压redis源码压缩包  # tar -xzvf redis-3.2.12.tar.gz3.进入r ...

  2. Redis数据库的安装配置方

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/100.html?1455869650 redis 是一个高性能的key-v ...

  3. redis简介及安装配置

    简介 redis是一个开源的高性能键值对数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存.队列系统等不同角色. 特性 存储结构:redis是远程字 ...

  4. Redis Cluster 简单安装配置

    1 新建目录 “/app/redis”,输入命令 mkdir -p /app/redis 2 先安装ruby-2.3.1.tar.gz 3 测试ruby是否安装成功,输入命令:gem,如果显示以下信息 ...

  5. redis主从+哨兵 安装配置二

    实验环境: 192.168.2.201 centos7 master sentinel 192.168.2.202 centos7 slave   sentinel 192.168.2.203 cen ...

  6. redis的简单安装配置

    一.简介 Redis是一种高级key-value数据库,数据可以持久化,支持的数据类型很丰富,有字符串,哈希,链表,集合和有序集合5种数据类型 Redis支持在服务器端计算集合的并,交和补集(diff ...

  7. Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案

    以前有想过用 Memcache 实现M/S架构的负载均衡方案,直到听说了 Redis 后才发现它做得更好.发了几天时间研究了一下 Redis ,感觉真的很不错,特整理一下! 以下操作都是在 SUSE  ...

  8. linux环境下redis数据库的安装|配置|启动

    安装 下载:打开redis官方网站,推荐下载稳定版本(stable) 解压 tar zxvf redis-3.2.5.tar.gz 复制:推荐放到usr/local目录下 sudo mv -r red ...

  9. Redis - 环境的安装配置

    Redis 下载安装步骤: 下载 redis 源码: [huey@huey-K42JE ~]$ wget http://download.redis.io/releases/redis-x.y.z.t ...

随机推荐

  1. spark资料下载

    很全的spark资料下载,包含pdf书籍和培训学校视频教程, 1.spark多语言编程:spark多语言开发 2.tachyon:tachyon 3.sparkR:sparkR 所有内容请点击:所有内 ...

  2. [c++]基类对象作为函数參数(赋值兼容规则)

    编程处理教师的基本情况. 要求: 1.定义一个"person"类.用来存储及处理人的姓名.性别.年龄,成员函数自定: 2.定义"teacher"类,公有继承&q ...

  3. dlmalloc 2.8.6 源代码具体解释(5)

    本文章由vector03原创, 转载请注明出处. 邮箱地址: mmzsmm@163.com, 欢迎来信讨论.     3. 分配及实现 本章节介绍dlmalloc的分配算法和实现.由于存在多mspac ...

  4. OL记载Arcgis Server切片

    概述: 本文讲述怎样在OpenLayers中调用Arcgis Server切片并显示. 思路: 在OpenLayers中载入Arcgis Server切片用XYZ图层,Arcgis Server的切片 ...

  5. Autoencoders and Sparsity(一)

    An autoencoder neural network is an unsupervised learning algorithm that applies backpropagation, se ...

  6. Active Data Guard

    ADG INTRODUCE Active Data Guard(ADG)是ORACLE 11g企业版的新特性,需要单独的License.可以打开Physical standby至read only模式 ...

  7. vue prpos

    匹配某些值中的一个 type: { validator: function(value) { return ["success", "warning", &qu ...

  8. cat---查看文件内容

  9. C++遍历目录+_finddata_t结构体用法

    Struct _finddata_t是用来存储文件各种信息的结构体,使用这个结构体要引用的头文件为“ #include <io.h>”它的结构体定义如下: struct _finddata ...

  10. 洛谷 P2372 yyy2015c01挑战算周长

    P2372 yyy2015c01挑战算周长 题目背景 yyy2015c01快速的解决了问题,受到邻居们的赞许,高兴的回到家,把糖给了妈妈,吃了香喷喷的午饭,又睡了一个甜甜的午觉,感觉人生真美好.下午爸 ...