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名不要 ...
随机推荐
- CuteEditor.Editor+a+a+c+a+a.a() System.RuntimeType.get_Assembly() 问题解决方法
问题: Server Error in '/' Application. Attempt by method 'CuteEditor.Editor+a+a+c+a+a.a()' to access m ...
- sudoers文件设置sudo命令无密码(root密码)登录
参考博客:http://xvshell.iteye.com/blog/1838093 1. 当用户执行sudo时,Linux系统会去寻找/etc/sudoers文件,并且这是主动的,判断用户是否有执行 ...
- Linux用户和用户组管理 用户配置和管理的相关文件
用户信息文件 /etc/passwd 这个文件中保存的就是系统中所有的用户及其对应的用户主要信息. 文件格式 : 第1字段 第2字段 第3字段 第4字段 第5字段 第6字段 第7字段 用户名称 密码 ...
- Struts2笔记01——基础MVC架构(转)
原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm Apache Struts 2是用来创建企业级Java ...
- 表单元素disabled禁用后不能自动提交到服务器
表单元素disabled禁用后不能自动提交到服务器,项目中需要一个元素只展示不修改,所以把一个input元素设置成了disabled="disabled",但是提交的时候改数据值是 ...
- java验证类ValidUtils
ValidUtils.java package com.lyqc.utils; import org.apache.commons.lang.StringUtils; public class Val ...
- PHP自动导入类
自动require出所需要的类文件,支持PSR系列规范 spl_autoload_register(function ($class) { $classNames = explode('\\',$cl ...
- KVC和KVO的理解(底层实现原理)
1.KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性.而不是通过调用Setter.Getter方法访问.KVO 就是基于 KVC 实现的 ...
- tomcat 日志禁用
1.禁用catalina.out日志通过修改catalina.sh配置可以控制tomcat不生成该文件只要将if [ -z "$CATALINA_OUT" ] ; then CAT ...
- ZooKeeper服务-操作(API、集合更新、观察者、ACL)
操作 create:创建一个znode(必须要有父节点)delete:删除一个znode(该znode不能有任何子节点)exists:测试一个znode是否存在并且查询它的元数据getACL,setA ...