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=======================================================

===========================================排序==========================================================

=========================================中文测试============================================================

=============================================百家姓=======================================================

最新文章

  1. AspNetPager分页控件
  2. 1-13 代理ARP和RARP
  3. 12 哈希表相关类——Live555源码阅读(一)基本组件类
  4. 运行在VMware上的Linux虚拟机如何使用NAT模式连接物理机的外部网络
  5. 树莓派版的家用NAS服务器
  6. rockmongo用法
  7. ZZULIOJ 1726 迷宫(BFS+小坑)
  8. [Unity+Android]横版扫描二维码
  9. 「Poetize7」电话线路
  10. Java编程思想-泛型-简单泛型例子
  11. codevs1304 拓扑序计数
  12. matlab GUI之常用对话框(二)-- 进度条的使用方法
  13. asp.net core + angular2 的环境配置
  14. JS 数组获取最大值
  15. [QT Creator]LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 。
  16. Drawerlayou与ScrollView的介绍
  17. mysql的并发处理机制_下篇
  18. WebApi用JilFormatter处理客户端序列化的字符串加密,之后在服务端解析。
  19. Android-Gradle(五)
  20. orm 扩展

热门文章

  1. Java转C#,非常不错(转)
  2. 预防SQL注入攻击
  3. HackerRank - fibonacci-modified 【大数】
  4. Android开发之旅-获取地理位置的经度和纬度
  5. ETL应用:一种一次获取一个平台接口文件的方法
  6. OpenGL纹理上下颠倒翻转的三种解决办法
  7. Shell编程之Linux信号及信号跟踪
  8. PHP实现链式操作
  9. C语言中static的使用方法【转】
  10. ssm搭建相关的问题