Java操作Redis(代码演示)
redis-demo演示
一、创建一个maven工程
1、在pom.xml中引入相关redis的相关依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.wisezone</groupId>
<artifactId>redis_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>redis_demo</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
18 <!-- redis依赖jar包 -->
19 <dependency>
20 <groupId>redis.clients</groupId>
21 <artifactId>jedis</artifactId>
22 <version>2.9.0</version>
23 </dependency> 25 <!-- 单元测试 -->
26 <dependency>
27 <groupId>junit</groupId>
28 <artifactId>junit</artifactId>
29 <version>4.12</version>
30 </dependency>
</dependencies>
</project>
2、 一个封装的Redis-util类
package com.wisezone.redis_demo; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; /**
* 一个封装的Redis-util类
*/ public final class RedisUtil { //Redis服务器IP
private static String ADDR = "127.0.0.1"; //Redis的端口号
private static int PORT = 6379; //访问密码
private static String AUTH = "123456"; //可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
private static int MAX_ACTIVE = 1024; //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private static int MAX_IDLE = 200; //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
private static int MAX_WAIT = 10000; private static int TIMEOUT = 10000; //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的
private static boolean TEST_ON_BORROW = true; private static JedisPool jedisPool = null; /**
* 初始化Redis连接池
*/
static {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取Jedis实例
* @return
*/
public synchronized static Jedis getJedis() {
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
return resource;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 释放jedis资源
* @param jedis
*/
public static void returnResource(final Jedis jedis) {
if (jedis != null) {
jedisPool.close();
}
} }
3、junit测试类:TestRedis
package com.wisezone.redis_demo; import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.junit.Before;
import org.junit.Test; import redis.clients.jedis.Jedis; public class TestRedis { private Jedis jedis; @Before
public void setup() {
// //连接redis服务器
// jedis = new Jedis("127.0.0.1", 6379);
// //权限认证
// jedis.auth("123456"); jedis = RedisUtil.getJedis();
} /**
* redis存储字符串
*/
@Test
public void testString() { //-----添加数据----------
jedis.set("name", "张三");//向key-->name中放入了value-->张三
System.out.println(jedis.get("name"));//执行结果:张三 jedis.append("name", " is my lover");//追加
System.out.println(jedis.get("name")); jedis.del("name");//删除某个键
System.out.println(jedis.get("name")); //设置多个键值对
jedis.mset("name","李四","age","23","qq","476777XXX");
jedis.incr("age");//进行加1操作
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));
} /**
* redis操作Map
*/
@Test
public void testMap() {
//-----添加数据----------
Map<String, String> map = new HashMap<String, String>();
map.put("name", "沈珍珠");
map.put("age", "25");
map.put("address", "浙江横店拍摄基地");
jedis.hmset("大唐荣耀", map); //取出“大唐荣耀”中的name,执行结果:[minxr]-->注意结果是一个泛型的List
//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
List<String> rsmap = jedis.hmget("大唐荣耀", "name", "age", "address");
System.out.println(rsmap); //删除map中的某个键值
jedis.hdel("大唐荣耀","age");
System.out.println(jedis.hmget("大唐荣耀", "age")); //因为删除了,所以返回的是null
System.out.println(jedis.hlen("大唐荣耀")); //返回key为user的键中存放的值的个数2
System.out.println(jedis.exists("大唐荣耀"));//是否存在key为user的记录 返回true
System.out.println(jedis.hkeys("大唐荣耀"));//返回map对象中的所有key
System.out.println(jedis.hvals("大唐荣耀"));//返回map对象中的所有value Iterator<String> iter=jedis.hkeys("大唐荣耀").iterator();
while (iter.hasNext()){
String key = iter.next();
System.out.println(key+":"+jedis.hmget("大唐荣耀",key));
}
} /**
* redis操作List
*/
@Test
public void testList() {
//开始前,先移除所有的内容
jedis.del("java framework");
System.out.println(jedis.lrange("java framework", 0, -1));
//先向key java framework中存放三条数据
jedis.lpush("java framework","spring");
jedis.lpush("java framework","struts");
jedis.lpush("java framework","hibernate");
//再取出所有数据jedis.lrange是按范围取出,
// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
System.out.println(jedis.lrange("java framework",0,-1)); jedis.del("java framework");
jedis.rpush("java framework","spring");
jedis.rpush("java framework","struts");
jedis.rpush("java framework","hibernate");
System.out.println(jedis.lrange("java framework",0,-1));
} /**
* redis操作Set
*/
@Test
public void testSet(){
try {
//添加
jedis.sadd("漂洋过海来看你","郑楚");
jedis.sadd("漂洋过海来看你","苏芒");
jedis.sadd("漂洋过海来看你","唐明");
jedis.sadd("漂洋过海来看你","唐果果");
jedis.sadd("漂洋过海来看你","严晓秋");
//移除“严晓秋”
jedis.srem("漂洋过海来看你","严晓秋");
System.out.println(jedis.smembers("漂洋过海来看你"));//获取所有加入的value
System.out.println(jedis.sismember("漂洋过海来看你", "严晓秋"));//判断 “严晓秋” 是否是“漂洋过海来看你”集合的元素
System.out.println(jedis.srandmember("漂洋过海来看你"));
System.out.println(jedis.scard("漂洋过海来看你"));//返回集合的元素个数
} catch (Exception e) {
e.printStackTrace();
}
} @Test
public void test() throws InterruptedException {
//jedis 排序
//注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
jedis.del("a");//先清除数据,再加入数据进行测试
jedis.rpush("a", "1");
jedis.lpush("a","6");
jedis.lpush("a","3");
jedis.lpush("a","9");
System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
System.out.println(jedis.sort("a")); // [1, 3, 6, 9] //输入排序后结果
System.out.println(jedis.lrange("a",0,-1));
} @Test
public void testRedisPool() {
RedisUtil.getJedis().set("newname", "中文测试");
System.out.println(RedisUtil.getJedis().get("newname"));
} @Test
public void testSortedSet() {
jedis.zadd("百家姓", 10000, "赵");
jedis.zadd("百家姓", 9999, "钱");
jedis.zadd("百家姓", 9998, "孙");
jedis.zadd("百家姓", 9997, "李"); Set<String> set = jedis.zrange("百家姓", 0, -1);
System.out.println("从小到大:" + set); Set<String> $set = jedis.zrevrange("百家姓", 0, -1);
System.out.println("从大到小:" + $set); Set<String> scoreset = jedis.zrangeByScore("百家姓", 9997, 9999);
System.out.println("通过score截取从小到大:" + scoreset); Set<String> $scoreset = jedis.zrevrangeByScore("百家姓", 9999, 9997);
System.out.println("通过score截取从大到小:" + $scoreset);
}
}
Console:
===========================================redis存储字符串===================================================
========================================redis操作Map=====================================================
===========================================redis操作List =====================================================
=======================================redis操作Set=======================================================
===========================================排序==========================================================
=========================================中文测试============================================================
=============================================百家姓=======================================================
Java操作Redis(代码演示)的更多相关文章
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- 使用Java操作Redis(一)
Redis是一款基于key-value的数据库服务器,安装完成后我们可以通过redis-cli使用Redis提供的命令完成各种操作.redis-cli实际上就是一款客户端,和redis-server建 ...
- Redis基础知识、命令以及java操作Redis
1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...
- 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!
转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...
- redis入门到精通系列(四):Jedis--使用java操作redis详解
(一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
- windows下Redis安装及利用java操作Redis
一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- java操作redis集群配置[可配置密码]和工具类
java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>redis.clients</groupId> & ...
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
随机推荐
- SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传
SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...
- 06 Spring框架 依赖注入(三)多配置文件
在Spring前几节的学习中我们都使用了一个配置文件,就像struts2中可以包含其他的配置文件,我们能不能使用多个配置文件呢(在工程比庞大,配置比较多的时候)? Spring多配置文件分为两种: 平 ...
- 深入浅出Node.js(下)
(五):Node.js的异步实现 专栏的第五篇文章<Node.js的异步实现>.之前介绍了Node.js的事件机制,也许读者对此尚会觉得意犹未尽,因为仅仅只是简单的事件机制,并不能道尽No ...
- VMWare中安装windowsXP遇到的问题
XP系统安装 1.安装Windows和安装linux不一样,创建虚拟机完成后Linux自动根据硬盘进行系统安装,不需要提前分区.而windows必须进行提前分区,这个分区是在虚拟磁盘上完成的,就是你创 ...
- springboot-vue项目前台2
api_account.js import * as API from './' export default { //登录 login: params => { return API.POST ...
- hadoop01
RPC:异步系统的调用,webservice是RPC的一种.webservice用于不在同一个公司的系统调用,同一个公司用socket调用.就是RPC. Dubbo淘宝的RPC框架. Hadoop r ...
- 【Head First Servlets and JSP】笔记7:如何创建一个全局的dog?
重定向与请求分派 “局部”参数——ServletConfig——servlet初始化参数 “全局”参数——ServletContext——上下文初始化参数 Web app的“构造器”——Servlet ...
- js 职责链模式简要介绍
定义: 使多个对象都有机会处理请求,避免发送者与接受者之间的耦合关系,将对象连成一条链,沿着这条链传递请求,直到有一个对象处理它. 如何把对象串联起来?解决方法通常是将另一个对象作为新创建对象的参数, ...
- Classloader机制
1.概述? 类加载器:负责.class文件加载到内存中,并为之生成对应的Class对象,也就是字节码对象.这样就可以使用这个类中的成员变量和方法了.而被加载到内存中的class文件就会变成class对 ...
- DataX-HDFS(读写)
DataX操作HDFS 读取HDFS 1 快速介绍 HdfsReader提供了读取分布式文件系统数据存储的能力.在底层实现上,HdfsReader获取分布式文件系统上文件的数据,并转换为DataX传输 ...