Redis简介:

redis是一个性能非常优秀的内存数据库,通过key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。redis的安装配置,比较简单,详见官方网站。

在多线程下使用Jedis

在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能. 
初始化JedisPool

JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

可以以静态的方式处理以上代码,它是线程安全的.

static {pool = new JedisPool(new Config(), "host", 6379);}

JedisPoolConfig包含了许多有用的redis指定的连接池的默认参数。比如,如果一个连接300秒内没有任何的返回Jedis将关闭这个连接.

可以这样使用:

Jedis jedis = pool.getResource();
try { //随便做一些对于redis的操作 jedis.set("foo", "bar"); String foobar = jedis.get("foo"); jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike");  Set<String> sose = jedis.zrange("sose", 0, -1); } finally { //这里很重要,一旦拿到的jedis实例使用完毕,必须要返还给池中
   pool.returnResource(jedis); } //程序关闭时,需要调用关闭方法 pool.destroy();

设置主/从分布

启用同步复制 
Redis主要为了主/从分布而构建。这意味着"write"请求必须要指向"master", "master"会同步复制改变的内容到"slave". "read"请求可以(不是必须的)被指向"slave",缓解"master"的读写压力. 
可以按以下的步骤使用"master". 为了启用同步复制,有两个方式去告诉"slave"将"slaveOf"到一个给定的"master":   1.在redis server的config文件(redis.conf)指明   2.在拿到的jedis实例中调用"slaveOf"方法并指定IP和端口

jedis.slaveOf("192.168.1.35", 6379);

注意:"slave"也是一个redis server,也可以接收"write"请求并不会报错,但是改变不会被同步复制,所以如果弄反了jedis的实例则一些操作会被覆盖. 
禁用同步复制/master失败后,提升slave 
如果"master"down掉,可以提升"slave"成为新的"master".首先试着禁用同步复制离线的"master",如果有几个"slave",启用同步复制其余的"slave"到新的"master".

slave1jedis.slaveofNoOne();
slave2jedis.slaveOf("192.168.1.36", 6379);

因为自己在使用Hadoop做join的时候,小表也很大,导致内存爆满,所以打算用Redis来看看。把数据加入Redis的代码如下:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;public class RedisInutAccount {private static String parseRaw(String str) {if (str==null) {return "";}str = str.trim();if (str.startsWith("\"")) {str = str.substring(1);}if (str.endsWith("\"")) {str = str.substring(0, str.length() - 1);}return str;}public static void main(String[] args) throws IOException {JedisPool pool = new JedisPool("192.168.2.101", 6379);Jedis jedis = pool.getResource();jedis.flushAll();File file = new File("sample_account.del");FileReader is = new FileReader(file);BufferedReader br = new BufferedReader(is);String tmp = null;while ((tmp = br.readLine()) != null) {System.out.println(tmp);jedis.set(parseRaw(tmp), "1");}br.close();pool.returnResource(jedis);pool.destroy();}
}

转载于:https://www.cnblogs.com/shudonghe/p/3262295.html

Java连接Redis (key-value存储系统)相关推荐

  1. java 连接redis失败_java 连接Redis问题及demo

    java连接linux Redis遇到的问题 昨天在Linux搭建了Redis服务,今天使用java连接测试了一下.要想使用java连接redis服务,就离不开jedis-2.6.1.jar.使用je ...

  2. Java连接Redis及操作(二)

    前言 上一节我们学习了java连接Redis,并且连接Redis成功,今天博主带领大家进行简单的操作Redis.要想对Redis进行Java的操作,必须先了解Redis API(点击这里),可看到AP ...

  3. Java连接Redis及操作(一)

    Redis简介 Redis是一个开源的使用ANSI c语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它是一种非关系性的数据库.它是以key-val ...

  4. Redis——Java连接Redis

    Java连接redis,首先修改两项配置文件 bind 127.0.0.1 ::1 注释掉 protected-mode 设置为no 然后需要导入一个依赖 <!--redis--> < ...

  5. java连接redis存取数据(详细)

    声明:本文章仅供参考,学无止境,若有不足之处请指出,非常感谢! 源代码+相关工具下载:https://download.csdn.net/download/corleone_4ever/1081125 ...

  6. Redis集群搭建及java连接redis

    Redis集群搭建及java连接redis Redis集群分为三种: 1.主从关系模式2.Sentinel哨兵关系模式3.Cluster去中心化模式 1.主从关系模式 1.1.什么是主从模式? (1) ...

  7. Java连接Redis

    Java连接Redis Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对redis各类API进行封装调用. 引入jar包 我创建的是maven项目,所以只用在pom ...

  8. Java集成Redis key过期通知

    为什么要使用过期通知呢? 捕获Redis中过期的Key,解锁新姿势.比如有个用户会员的模块,那么可以在redis添加一个用户会员的有效时Key,然后在Java项目中捕获,处理相关的逻辑. 一.开启Re ...

  9. java连接redis不稳定_java相关:jedispool连redis高并发卡死的问题

    java相关:jedispool连redis高并发卡死的问题 发布于 2020-6-30| 复制链接 本篇文章主要介绍了jedispool连redis高并发卡死的问题,小妖觉得挺不错的,现在分享给大家 ...

  10. java 连接redis 以及基本操作

    一.首先下载安装redis 二.项目搭建 1.搭建一个maven 工程 2. 在pom.xml文件的dependencies节点下增加如下内容: <!-- resis --><dep ...

最新文章

  1. Python DAG—归简法—拓扑排序
  2. 【小白学习C++ 教程】一、Vscode和 Visual stdudio配置C++环境
  3. xfce右键open in terminal失效问题解决
  4. 【暴力】MSWORLD
  5. C++/C学习笔记(十一)——存储分配器和适配器
  6. 【Kafka】kafka Removed ✘✘✘ expired offsets in ✘✘✘ milliseconds.
  7. JAVA面试题(2018)
  8. 长沙android工程师,长沙安卓工程师辅导
  9. Delphi中的字符串压缩与解压缩
  10. 【转】Linux删除文件未释放空间问题处理
  11. WinForm编程开发实用技巧14则(转)
  12. 【宠物领养系统项目】(附源码)
  13. 《C专家编程》学习笔记(对链接的思考)
  14. PM-项目管理(Project Management)
  15. 基于TVUE框架在中型移动端项目的直出同构实践
  16. Cross Apply 与 Outer Apply 的区别
  17. You must restart adb and Eclipse处理方法(sjk_daemon.exe占用5037端口)
  18. python实现签名ElGamal算法
  19. 【研报笔记】光大技术择时系列1:基于阻力支撑相对强度(RSRS)的市场择时
  20. 递四方(4PX)一面

热门文章

  1. MySQL 主键入门到精通
  2. 远程连接hive报错
  3. Hive Url解析函数
  4. 这是一位拿到BAT大厂offer应届生的年终总结,那么你的呢?...
  5. Latex排版:CTeX winEdit 输出“系统找不到指定的文件”的解决办法)
  6. 《JavaScript 模式》读书笔记
  7. kafka 小案例【二】 --kafka 设置多个消费着集群
  8. error LNK2019: 无法解析的外部符号 问题1
  9. 1、配置后台登录以及模板引入
  10. 售货员的难题(codevs 2596)