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(代码演示)的更多相关文章

  1. java操作redis之jedis篇

    首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...

  2. 使用Java操作Redis(一)

    Redis是一款基于key-value的数据库服务器,安装完成后我们可以通过redis-cli使用Redis提供的命令完成各种操作.redis-cli实际上就是一款客户端,和redis-server建 ...

  3. Redis基础知识、命令以及java操作Redis

    1 nosql的概念 sql:操作(关系型)数据库的标准查询语言 关系型数据库(rdbms):以关系(由行和列组成的二维表)模型为核心数据库,有表的储存系统.(mysql.oracle.sqlserv ...

  4. 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!

    转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...

  5. redis入门到精通系列(四):Jedis--使用java操作redis详解

    (一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...

  6. java 操作redis

    使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...

  7. windows下Redis安装及利用java操作Redis

    一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...

  8. java操作redis集群配置[可配置密码]和工具类(比较好用)

    转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类     <dependency>   <groupId>red ...

  9. java操作redis集群配置[可配置密码]和工具类

    java操作redis集群配置[可配置密码]和工具类     <dependency>   <groupId>redis.clients</groupId>   & ...

  10. Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术

    3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...

随机推荐

  1. 2015.6.30 反弹的教训(想做T)

    心路:在6.29号,市场连续大跌!我到6.29号才想到可以做T+0.6.30消息面已经利好(双降准),已经计划做T+0(X先买后卖).  开市大跌至跌停.午后所有股票开始反弹.但是上午跌停时不敢入市, ...

  2. docker学习笔记2--对镜像/容器的命令操作

    Docker启动一个Centos镜像 我们下载完成一个Centos镜像之后,开始启动 docker run -d -i -t <imageID> /bin/bash 这样就能启动一个一直停 ...

  3. Linux安装Mycat

    1.官网下载mycat到/home/install目录下 2.解压到/usr/local/mycat目录下 tar -zxvf Mycat-server-1.6-RELEASE-20161028204 ...

  4. 【HackerRank】Sherlock and Array

    Watson gives an array A1,A2...AN to Sherlock. Then he asks him to find if there exists an element in ...

  5. QT 数字图像处理 笔记一

    1.被有符号整数和无符号整数十足的坑了一上午.我在实现图像旋转的时候先把坐标轴中心平移到图像中心:painter.translate(up_x+temp_w,up_y+temp_h);注意这里面各个数 ...

  6. Django-实现图片验证码

    Django实现图片验证码 Python生成随机验证码,需要使用PIL模块. pip3 install pillow 1.基本使用 1. 1 创建图片 from PIL import Image im ...

  7. unicode和utf8

    很多人,即使是有一些项目经验的人,都说过这句话.但是如果深入的理解什么是unicode之后就会知道,原来我们经常说的这句话“unicode字符是2个字节”这句话是有问题的. 要说清楚这个问题,首先就要 ...

  8. Qt下TCP编程

    一.服务器 1.声明一个QTcpServer对象 QTcpServer* serverListener; 2.new出对象 this->serverListener = new QTcpServ ...

  9. 笔记<c# 调用DLL解密密文>

    using DTcms.Common; using System; using System.Collections.Generic; using System.Linq; using System. ...

  10. 使用标签代替goto关键字

    众所周知,java中没有goto语句,但是保留了goto这个关键字.由于goto是在源码级上的跳转,多次使用goto会引起代码混乱容易出错,这也是java取消goto语句的目的所在,但是goto语句也 ...