使用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 ...
随机推荐
- 日常问题记录-- java.lang.IllegalArgumentException: taglib definition not consistent with specification version
转自:https://www.cnblogs.com/carterzhang/p/4288650.html 背景: tomcat8.0中使用taglib 错误表现: java.lang.Illegal ...
- Synergy 共享键盘和鼠标
直接安装Synergy 不行的话加配置文件 ➜ ~ cat synergy.conf section: screens lab712-PC: ckboss-HP: end section: links ...
- Combobox下拉框两级联动
下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科 ...
- github上下载开源项目
1.首先获取到设置信息 2.找到克隆的路径(本步骤不包含下载.zip的方法) 3.打开 Git Shell ->输入: cd ../../ ->输入: cd 想要安装的路径 ->输 ...
- PHP正则表达式函数总结
/* 测试环境:PHP5.3.29(PCRE8.32) */ 常用函数:(正则表达式规则基本同JS_RE_Read.txt) PS:1.PHP中的PCRE一般仅使用这三个修饰符:"i&quo ...
- (转载)Android之三种网络请求解析数据(最佳案例)
[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报 分类: Gson.Gson解析(1) 版权声明:本文为博主原创 ...
- LastIndexOf干什么用的
LastIndexOf的作用是对字符串进行从后往前的检索,找到第一个匹配的位置.比如对字符串“abcdbcd”执行lastindexof("bc")操作,得到的结果是4:4是从前往 ...
- python 时间差计算
import time import datetime datebg=input("date begin:") dateed=input("date end:" ...
- HDU 1087 Super Jumping! Jumping! Jumping!【DP】
解题思路:题目的大意是给出一列数,求这列数里面最长递增数列的和 dp[i]表示到达地点i的最大值,那么是如何达到i的呢,则我们可以考虑没有限制条件时候的跳跃,即可以从第1,2,3,---,i-1个地点 ...
- oracle根据成绩排名查询某个名次段的人员
先说一下表结构 名字name 分数fenshu 表名test1,以下查询的是成绩排名为第三名和第四名,这个模板让你查随意排名段的人 select name,fenshu,mc from (se ...