package cn.byref.demo1;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import junit.framework.TestCase;
import redis.clients.jedis.Jedis;

public class RedisClientTest extends TestCase {

private Jedis getJedis() {
Jedis jedis = new Jedis("10.68.113.103", 6379);
return jedis;
}

/**
* 设置字符串值
*/
public void test_string_set() {
Jedis jedis = getJedis();
jedis.set("age", "1000");
System.out.println(jedis.get("age"));
}

/**
* 设置key的过期时间: setex(key,expire,value)
*/
public void test_strign_setex() {
Jedis j = getJedis();
j.setex("customer", 2, "张铭");
System.out.println("customer:" + j.get("customer"));
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("customer sleep 3 second =" + j.get("customer"));
}

/**
* 对已有key的值追加字符串
*/
public void test_string_append() {
Jedis jedis = getJedis();
jedis.append("age", "append");
System.out.println(jedis.get("age"));
}

/**
* 是否存在某个key:exists(String key)
*/
public void test_exists_key() {
Jedis j = getJedis();
boolean exists = j.exists("age");
System.out.println("age exists:" + exists);

exists = j.exists("name");
System.out.println("name exists:" + exists);
}

/**
* 获取所有的key
*/
public void test_get_all_keys() {
Jedis j = getJedis();
Set<String> keys = j.keys("*");
for (String key : keys) {
System.out.println("key=" + key);
}
}

/**
* 过期测试
*/
public void test_expire() {
Jedis j = getJedis();
String key = "username";
j.set(key, "张三");

System.out.println(key + " exists=" + j.exists(key));

// 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1
System.out.println(key + " ttl=" + j.ttl(key));

// 设置过期时间,单位秒
j.expire(key, 5);

// 休眠2秒
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}

// 查看key过期时间
System.out.println(key + " sleep 2 second ttl=" + j.ttl(key));

// 移除key的生存时间
j.persist(key);

// 查看key过期时间
System.out.println(key + " persist ttl=" + j.ttl(key));
}

/**
* map类型操作 hmset(key,map)
*/
public void test_map_set() {
Map<String, String> map = new HashMap<String, String>();
String key = "user score";
map.put("username", "zhansan");
map.put("age", "20");
map.put("address", "北京");

Jedis j = getJedis();
j.hmset("user score", map);

List<String> values = j.hmget(key, "age", "username", "address");
System.out.println("users list = " + values);

j.hdel(key, "age");
System.out.println("hdel users list = " + values);
System.out.println("map len = " + j.hlen(key));
System.out.println("all keys = " + j.hkeys(key));
System.out.println("all values = " + j.hvals(key));

System.out.println("*** iterate all keys ***");
Set<String> mapKeys = j.hkeys(key);
for (String mapKey : mapKeys) {
// String val = j.hget(key, mapKey); // 返回String
List<String> val = j.hmget(key, mapKey); // 返回List<String>
System.out.println(mapKey + " = " + val);
}

}

/**
* List类型操作:lpush,rpush,lset,rset,lrange,lrem
*/
public void test_list_set() {
Jedis j = getJedis();

String key = "java collection";
j.del(key);
j.lpush(key, "Collection");
j.lpush(key, "List");
j.lpush(key, "Vector");
j.lpush(key, "Map");

System.out.println("list len = " + j.llen(key));

System.out.println("lpush lrange(0,-1) = " + j.lrange(key, 0, -1));
System.out.println("lpush lrange(0,2) = " + j.lrange(key, 0, 1));

j.del(key);
j.lpush(key, "Collection");
j.lpush(key, "List");
j.rpush(key, "Vector");
j.rpush(key, "Map");
j.rpush(key, "List");
System.out.println("rpush lrange(0,-1) = " + j.lrange(key, 0, -1));
System.out.println(key + " ttl=" + j.ttl(key));

j.lrem(key,1,"List"); // lrem(key,count,value) count表示有重复的值时,删除几次
System.out.println("lrem lrange(0,-1) = " + j.lrange(key, 0, -1)); //[Collection, Vector, Map, List]

j.lset(key, 1, "NewList");
System.out.println("lrem lrange(0,-1) = " + j.lrange(key, 0, -1));
}
}

常用命令
    1)连接操作命令
    quit:关闭连接(connection)
    auth:简单密码认证
    help cmd: 查看cmd帮助,例如:help quit
    
    2)持久化
    save:将数据同步保存到磁盘
    bgsave:将数据异步保存到磁盘
    lastsave:返回上次成功将数据保存到磁盘的Unix时戳
    shundown:将数据同步保存到磁盘,然后关闭服务
    
    3)远程服务控制
    info:提供服务器的信息和统计
    monitor:实时转储收到的请求
    slaveof:改变复制策略设置
    config:在运行时配置Redis服务器
    
    4)对value操作的命令
    exists(key):确认一个key是否存在
    del(key):删除一个key
    type(key):返回值的类型
    keys(pattern):返回满足给定pattern的所有key
    randomkey:随机返回key空间的一个
    keyrename(oldname, newname):重命名key
    dbsize:返回当前数据库中key的数目
    expire:设定一个key的活动时间(s)
    ttl:获得一个key的活动时间
    select(index):按索引查询
    move(key, dbindex):移动当前数据库中的key到dbindex数据库
    flushdb:删除当前选择数据库中的所有key
    flushall:删除所有数据库中的所有key
    
    5)String
    set(key, value):给数据库中名称为key的string赋予值value
    get(key):返回数据库中名称为key的string的value
    getset(key, value):给名称为key的string赋予上一次的value
    mget(key1, key2,…, key N):返回库中多个string的value
    setnx(key, value):添加string,名称为key,值为value
    setex(key, time, value):向库中添加string,设定过期时间time
    mset(key N, value N):批量设置多个string的值
    msetnx(key N, value N):如果所有名称为key i的string都不存在
    incr(key):名称为key的string增1操作
    incrby(key, integer):名称为key的string增加integer
    decr(key):名称为key的string减1操作
    decrby(key, integer):名称为key的string减少integer
    append(key, value):名称为key的string的值附加value
    substr(key, start, end):返回名称为key的string的value的子串
    
    6)List 
    rpush(key, value):在名称为key的list尾添加一个值为value的元素
    lpush(key, value):在名称为key的list头添加一个值为value的 元素
    llen(key):返回名称为key的list的长度
    lrange(key, start, end):返回名称为key的list中start至end之间的元素
    ltrim(key, start, end):截取名称为key的list
    lindex(key, index):返回名称为key的list中index位置的元素
    lset(key, index, value):给名称为key的list中index位置的元素赋值
    lrem(key, count, value):删除count个key的list中值为value的元素
    lpop(key):返回并删除名称为key的list中的首元素
    rpop(key):返回并删除名称为key的list中的尾元素
    blpop(key1, key2,… key N, timeout):lpop命令的block版本。
    brpop(key1, key2,… key N, timeout):rpop的block版本。
    rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,

 并将该元素添加到名称为dstkey的list的头部
    
    7)Set
    sadd(key, member):向名称为key的set中添加元素member
    srem(key, member) :删除名称为key的set中的元素member
    spop(key) :随机返回并删除名称为key的set中一个元素
    smove(srckey, dstkey, member) :移到集合元素
    scard(key) :返回名称为key的set的基数
    sismember(key, member) :member是否是名称为key的set的元素
    sinter(key1, key2,…key N) :求交集
    sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
    sunion(key1, (keys)) :求并集
    sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
    sdiff(key1, (keys)) :求差集
    sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
    smembers(key) :返回名称为key的set的所有元素
    srandmember(key) :随机返回名称为key的set的一个元素
    
    8)Hash
    hset(key, field, value):向名称为key的hash中添加元素field
    hget(key, field):返回名称为key的hash中field对应的value
    hmget(key, (fields)):返回名称为key的hash中field i对应的value
    hmset(key, (fields)):向名称为key的hash中添加元素field 
    hincrby(key, field, integer):将名称为key的hash中field的value增加integer
    hexists(key, field):名称为key的hash中是否存在键为field的域
    hdel(key, field):删除名称为key的hash中键为field的域
    hlen(key):返回名称为key的hash中元素个数
    hkeys(key):返回名称为key的hash中所有键
    hvals(key):返回名称为key的hash中所有键对应的value
    hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

java redis client jedis 测试及常用命令的更多相关文章

  1. java redis client jedis 测试

    package cn.byref.demo1; import java.util.HashMap; import java.util.List; import java.util.Map; impor ...

  2. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  3. Redis启动服务和String常用命令

    Redis启动服务和String常用命令 1. 启动Redis服务 E:\redis>redis-server.exe redis.windows.conf _._ _.-``__ ''-._ ...

  4. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...

  5. redis五种数据类型和常用命令及适用场景

    一.redis的5种数据类型: 1.基础理解: string 字符串(可以为整形.浮点型和字符串,统称为元素) list 列表(实现队列,元素不唯一,先入先出原则) set 集合(各不相同的元素) h ...

  6. 【技术累积】【点】【java】【8】maven常用命令(持续更新)

    建立 mvn archetype:generate -DgroupId=com.andy.test -DartifactId=test-project -Dversion=0.0.1-SNAPSHOT ...

  7. Redis笔记,安装和常用命令

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/96.html?1455870708 一.redis简单介绍 redis是N ...

  8. Intro to Jedis – the Java Redis Client Library

    转自:http://www.baeldung.com/jedis-java-redis-client-library 1. Overview This article is an introducti ...

  9. RedisTemplate访问Redis数据结构(介绍和常用命令)

    Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...

随机推荐

  1. Go 定长的数组

    1.Go 语言数组的简介 几乎所有的计算机语言都有数组,应用非常的广泛.同样,在 Go 语言中也有数组并且在数组的基础上还衍生出了切片(slice). 数组是一系列同一类型数据的集合,数组中包含的每个 ...

  2. 关于js中splice方法返回的结果

    一.前言 刚刚在使用splice()方法,发现这个方法返回的是删除后的数组元素,如果要获取删除指定元素后的数组,直接调用原来的数组即可!因为splice()会改变原来数组!之前对splice()方法一 ...

  3. JavaEE编程实验 实验1 Java常用工具类编程(未完成)

    1.使用String类分割split将字符串“Solutions to selected exercises can be found in the electronic document The T ...

  4. Spring的AOP配置文件和注解实例解析

    1.1           Spring的AOP配置文件和注解实例解析 AOP它利用一种称为"横切"的技术,将那些与核心业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减 ...

  5. JAVA基础知识总结:二十

    一.网络编程基础 1.概念 所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备使用通信线路连接成一个规模大,功能比较强的网络系统,从而使得计算机之间可以相互通信,共享资源 所谓的网络编程,在 ...

  6. Jmeter - json参数处理

    做一个接口测试,之前用的get请求,key-value形式传参. 后来开发改为了post请求,采用了json形式传参.额,之前也做json形式的传参,但是这次遇到了问题,在此写篇博客,方便大家,也方便 ...

  7. maven的安装以及问题

    https://blog.csdn.net/machao0903/article/details/73368909https://www.cnblogs.com/jiejiecool/p/421885 ...

  8. spring cloud: zuul(三): ribbon负载均衡配置

    zuul的routes配置下path/url组合不支持负载均衡 下面介绍zuul的routes配置下的path/serviceId负载均衡配置 spring-boot-user微服务开启了:7901, ...

  9. com.netflix.zuul.exception.ZuulException: Forwarding error

    一.问题描述 在使用Spring Cloud的zuul组件,做路由转发时,每次重新启动后端服务,头几次调用都会出现com.netflix.zuul.exception.ZuulException: F ...

  10. p2751 Job Processing

    如果单单只安排过程1的时间最短,很容易算出来.用优先队列取最小,加上增量后再放回就行.对过程2也进行这样的操作.将过程1第一个完成的在过程2最后一个完成.以样例来说,过程1:1,1,2,2,3,过程2 ...