使用Java操作Redis(二)
上篇文章中我们可以看到,通过自己动手编码来操作Redis是相当繁琐的,实际上我们在重复制造轮子。Redis网站上列举出了一些方便操作Redis的常用工具。
可供Java选择的比较多,这里介绍一下Jedis的使用。
Jedis 所需Jar包下载地址:
http://search.maven.org/#artifactdetails%7Credis.clients%7Cjedis%7C2.4.2%7Cjar
http://search.maven.org/#artifactdetails%7Corg.apache.commons%7Ccommons-pool2%7C2.0%7Cjar
將commons-pool2-2.0.jar和jedis-2.4.2.jar同时添加到build path中。
Redis的value同时支持strings, hashes, lists, sets类型,下面代码为使用Jedis对这几种类型的插入和获取操作。
package com.csii.redis.test;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.junit.Assert;
import org.junit.Test;
//注意:为方便测试代码中用到了JUnit
import redis.clients.jedis.Jedis;
public class RedisTest extends Assert{
public static Jedis jedis = null;
static{
jedis = new Jedis("localhost",6379, 500);
jedis.connect();
jedis.auth("123456");
jedis.flushAll();
}
/**
* strings类型操作
*/
@Test
public void testStrings() {
String status = jedis.set("name", "Rongbo_J");
assertEquals("OK", status);
String name = jedis.get("name");
System.out.println(name);
}
/**
* hashes类型操作
*/
@Test
public void testHashes()
{
HashMap<String,String> personInfo = new HashMap<String,String>();
personInfo.put("name", "Rongbo_J");
personInfo.put("age", "18");
personInfo.put("weight", "120");
String status = jedis.hmset("person", personInfo);
assertEquals("OK",status);
Map<String, String> person = jedis.hgetAll("person");
System.out.println(person);
}
/**
* lists类型操作
*/
@Test
public void testLists()
{
//lists为线性结构,通过lpush和lpop添加和移除list中的元素。
for(int i=0;i<20;i++)
{
jedis.lpush("array","i:" + i);
}
long len = jedis.llen("array");
System.out.println(len);
for(int i=0;i<len;i++)
{
System.out.println(jedis.lpop("array"));
}
long len2 = jedis.llen("array");
System.out.println(len2);
}
/**
* sets类型操作
*/
@Test
public void testSets()
{
for(int i=0;i < 20;i++)
{
jedis.sadd("mySet", "SetElmt"+i);
}
long len = jedis.scard("mySet");
System.out.println(len);
Set<String> mySet = jedis.smembers("mySet");
System.out.println(mySet);
}
/**
* 不使用Jedis操作Redis,运行此测试方法时需要注释掉静态代码块部分
*/
@Test
public void testWithoutJedis()
{
try {
Socket sock = new Socket("127.0.0.1",6379);
OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
String sendStr = "*3\r\n$3\r\nSET\r\n$4\r\nname\r\n$8\r\nrongbo_j\r\n";
out.write(sendStr.getBytes());
sendStr = "*2\r\n$3\r\nGET\r\n$5\r\nname\r\n";
out.write(sendStr.getBytes());
byte[] buffer = new byte[512];
in.read(buffer);
System.out.println(new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
}
}
代码中只列举了两三种操作,实际上Jedis对每种类型提供的操作方式非常多,使用起来也非常简单,这里没有全部列举。
使用Java操作Redis(二)的更多相关文章
- Java操作redis【二十】
1.首先需要将redis的绑定地址为127.0.0.1去掉,同时将redis的保护模式去掉,并且开放6379端口. 如果是保护模式需要输入密码才能连接. (1)去掉绑定地址: (2)去掉保护模式: ( ...
- windows下Redis安装及利用java操作Redis
一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...
- java操作redis学习(一):安装及连接
文章参考自:http://www.cnblogs.com/edisonfeng/p/3571870.html,在此基础上进行了修改. 一.下载安装Redis redis官网显示暂时不支持Windows ...
- 使用Java操作Redis(一)
Redis是一款基于key-value的数据库服务器,安装完成后我们可以通过redis-cli使用Redis提供的命令完成各种操作.redis-cli实际上就是一款客户端,和redis-server建 ...
- Redis基础知识、命令以及java操作Redis
1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...
- Redis入门(四)-Java操作Redis
<Redis入门>系列文章的第四篇,这一节看一下如何用Java版本的redis客户端工具--Jedis来操作redis. Jedis封装了丰富的api来对redis的五种数据类型 stri ...
- redis入门到精通系列(四):Jedis--使用java操作redis详解
(一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...
- Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等
NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
随机推荐
- Android中Handler原理
Handler主要是主线程和子线程通信.一般子线程中做一些耗时操作做完之后通知主线程来改动UI. 实际上android系统在Activity启动或者状态变化等都是通过Handler机制实现的. 首先进 ...
- windows上通过vnc连接虚拟机中linux系统
首先要在虚拟机中安装vnc. 虚拟机的设置中要启用VNC连接. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHdzc2c=/font/5a6L5L2T/ ...
- ora-01157怎么解决
在数据库startup时,出现以下两个错误:ora-01157:cannot identify/lock data file 8 -see DBWR trace fileora-01110:data ...
- gist.github.com
hosts添加:192.30.253.118 gist.github.com
- R和中心度、中心势
最近用R画论文里的弦图,恰好借的书里着重写了中心度等问题. 网上流行一套密歇根大学社交计算的教程.但是前两年看了好几遍总是搞不清,即便是记公式也是收效不大.不妨按照书上总结一下. 绝对法: 无向图点度 ...
- 005.JMS可靠性机制
1. 消息接收确认 JMS消息只有在被确认之后,才认为已经被成功地消费了.消息的成功消费通常包含三个阶段: 客户接收消息 客户处理消息 消息被确认 在事务性会话中,当一个事务被提交的时候,确认自动发生 ...
- 乌班图 之 Ubuntu 16.04 LTS连接无线上网炒鸡慢问题!!!
用VMware装了Ubuntu 16.04 LTS后连接无线上网,发现出奇的慢. 果断感觉有问题,立马找度娘,果然有问题!!! 网上查找亲测有效的方法为: 在终端运行:sudo gedit /etc/ ...
- C# 热敏打印机 小票打印机 打印图片
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: 因为我们这里主要是打印条形码和二维码,所以以条形码和二维 ...
- 压缩图片C#算法
转载自 http://www.open-open.com/lib/view/open1391348644910.html using System.IO; using System.Drawing; ...
- ListNode的python 实现
class Node(object): def __init__(self): self.val = None self.next = None class Node_handle(): def __ ...