标签:翻译 列表 创建 数据 安装 保存数据 hub 转移 tst
本文为学习Redis的一个总结,包含了资料的整理,Redis的介绍,常用数据类型,常用命令,多数据库与事务的特性以及持久化的概述;如何在Linux上部署,以及使用Java客户端开发工具包来连接使用Redis,并记录了常见的问题,关于Redis的高级特性与使用场景后续开新文章进行补充。
视频教程教常用命令、数据类型、Jedis简单使用、事务与持久化简单概述,属于入门级别:
这篇很全的概述,包含特性、场景、还有基本的用法,都是概述性的简要说明:
这篇稍微有点高级,哈哈哈:
可以在线的测试一些学会的命令:
redis.conf相关的,懒翻译配置文件中英语就看他吧 :
在Linux上搞Redis的参考:
(参考资料里,别人总结的很好,过去看看就好了,重要的再粘过来。)
Maven&JUint单元测试依赖
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
A candy:在线查询Maven依赖
简单的连接测试
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisTest {
/**
* Jedis的简单使用
*/
@Test
public void demo(){
//设置IP地址以及端口
Jedis jedis = new Jedis("192.168.121.128",6379);
//保存数据
jedis.set("name","菜鸟");
//获取数据
String value = jedis.get("name");
//打印数据
System.out.println(value);
//释放资源
jedis.close();
}
}
使用连接池
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisTest {
/**
* 使用连接池
*/
@Test
public void demoPoll(){
//连接池配置
JedisPoolConfig config = new JedisPoolConfig();
//最大连接数
config.setMaxTotal(30);
//最大空余连接数
config.setMaxIdle(10);
//根据 config host port 创建连接池
JedisPool jedisPool = new JedisPool(config,"192.168.121.128",6379);
//获取核心对象
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
//设置数据
jedis.set("name","弱鸡");
//获取数据
String value = jedis.get("name");
System.out.println(value);
}catch (Exception e){
e.printStackTrace();
}finally {
//释放资源
if(jedis != null){
jedis.close();
}
if(jedisPool != null){
jedisPool.close();
}
}
}
}
Make报错
直接 make 如果报错,则执行 make MALLOC=libc
;然后 ./redis-server
启动的一个小问题,还是要说一下
教程里面的redis版本低的原因吧,启动是 ./bin/redis-server
我用的时候都在src目录下,而非bin,所以不进入目录情况下带目录名启动应该是 ./src/redis-server
Jedis连接Linux上的redis出现 DENIED Redis is running in protected mode问题的解决方案
为什么如上更改了配置还报错? 启动的时候记得加载配置文件 ./redis-server ./redis.conf
连接超时
原因:Linux 上的6379端口没有打开,需要在防火墙中打开该端口
设置Linux的端口开放:
(1)vim /etc/sysconfig/iptables
(2)-A INPUT -m state -- state NEW -m tcp -p --dport 6379 -j ACCEPT
[可以yy复制22端口那行然后,p粘贴]
(3)重启防火墙设置:service iptables restart
也就是命令串行化、原子化执行,似的数据具有一致性
Redis之所以快,就是他的数据存储在了内存中(难怪多了会崩),为了能够重启Redis后数据仍然能够存在并读取使用,就需要将数据存储到磁盘里。
两种方式:
优势:
劣势:
配置:
cd /usr/local/redis
vim redis.conf
默认:
save 900 1 #每900秒至少1个key变化,持久化一次,到内存一个快照
save 300 10 #每300秒至少10个key变化,往硬盘写一次
save 60 10000 #每60秒至少10000个key变化,写一次
dbfilename dump.rdb #数据的文件名
dir ./ #保存的路径,redis路径下
优势:
同步:
a. 每秒同步:异步完成,效率高,一旦系统宕机,修改的数据丢失 b. 每修改同步:同步持久化,每分钟发生的变化记录到磁盘中,效率低,安全c. 不同步
日志写入操作追加模式append
a.系统宕机,不影响存在的内容
b.写入一半数据,若系统崩溃,下次启动redis,redis-check-aof工具解决数据一致性
如果日志过大,自动重写机制,修改的数据写入到到磁盘文件,创建新文件,记录产生的修改命令,重写切换时,保证数据安全
格式清晰的日志文件,完成数据的重建
劣势:
配置:
vim redis.conf
默认:
appendonly no #AOF方式默认关闭
appendfilename appendonly.aof #配置文件
appendfsync always #每修改一次,同步到磁盘上
appendsync everysec 每秒同步到磁盘一次
appensync no 不同步
标签:翻译 列表 创建 数据 安装 保存数据 hub 转移 tst
原文地址:https://www.cnblogs.com/nm666/p/10346159.html