[java进阶]2.Jedis基础与List的接口

1. Jedis应用与基本连接

jedis 是 redis推荐的java客户端。通过Jedis可以很方便地使用java代码的方式,从而对redis进行操作。jedis使用起来比较简单,它的操作方法与redis命令相类似。jedis在github上的下载地址为https://github.com/xetorthio/jedis 。如需要maven管理,可以添加如下依赖:
 


<dependency>

    <groupId>redis.clients</groupId>

    <artifactId>jedis</artifactId>

    <version>2.6.0</version> 

</dependency>

使用jedis进行连接:

public void connectionTest() {
jedis = new Jedis("127.0.0.1", 6379); // ip+port
jedis.auth("helloworld");  //password
}
  • 关系型数据库和nosql数据库

关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。

redis就是典型的非关系型,可基于内存亦可持久化的日志型,Key-Value数据库。为什么会出现NoSql数据库?主要是对数据库高并发读写的需求,每秒钟上万次的读写请求,硬盘IO无法承受。在部分场合(发红包 获取用户的点击信息 实时热力图)可以对关系数据库起到很好的补充作用。
 

2. Jedis基本接口

  • jedis对key的操作
public void keyTest() throws UnsupportedEncodingException {
// 清空数据
System.out.println(jedis.flushDB());
System.out.println(jedis.echo("hello")); 
// 判断key否存在
System.out.println(jedis.exists("foo")); 
jedis.set("key", "values");
System.out.println(jedis.exists("key"));
// 如果数据库没有任何key,返回nil,否则返回数据库中一个随机的key。
String randomKey = jedis.randomKey();
System.out.println("randomKey: " + randomKey); 
// 设置60秒后该key过期
jedis.expire("key", 60); 
// key有效毫秒数
System.out.println(jedis.pttl("key")); 
// 移除key的过期时间
jedis.persist("key"); 
// 获取key的类型, "string", "list", "set". "none" none表示key不存在System.out.println("type: " + jedis.type("key")); 
// 导出key的值byte[] 
bytes = jedis.dump("key");System.out.println(new String(bytes)); 
// 将key重命名
jedis.renamenx("key", "keytest");
System.out.println("key是否存在: " + jedis.exists("key"));
// 删除key
jedis.del("key");
System.out.println(jedis.exists("key"));
}
  • Jedis对字符串(String)的相关操作
public void stringTest() {

    jedis.set("hello", "hello");
    System.out.println(jedis.get("hello"));

    // 使用append 向字符串后面添加
    jedis.append("hello", " world");
    System.out.println(jedis.get("hello"));

    // set覆盖字符串
    jedis.set("hello", "123");
    System.out.println(jedis.get("hello"));

    // 设置过期时间
    jedis.setex("hello2", 2, "world2");
    System.out.println(jedis.get("hello2"));

    try {

    Thread.sleep(3000);
    } catch (InterruptedException e) {
    }

    System.out.println(jedis.get("hello2"));

     // 一次添加多个key-value对
    jedis.mset("a", "1", "b", "2");
    // 获取a和b的value
    List<String> valus = jedis.mget("a", "b");
    System.out.println(valus);

    // 批量删除
    jedis.del("a", "b");
    System.out.println(jedis.exists("a"));
    System.out.println(jedis.exists("b"));
}
  • Jedis对链表(Lists)的操作
public void listTest() {

    // 队列添加元素
    jedis.rpush(key, "aaaa");
    jedis.rpush(key, "bbbb");
    jedis.rpush(key, "cccc");

    // 队列长度
    System.out.println("lenth: " + jedis.llen(key));

    // 打印队列,从索引0开始,到倒数第1个(全部元素)
    System.out.println("all elements: " + jedis.lrange(key, 0, -1));

    // 索引为1的元素,当index超出范围时会返回一个error
    System.out.println("index of 1: " + jedis.lindex(key, 1));
 
    // 从队列的右边入队一个元素
    jedis.rpush(key, "-2", "-1");// 先-2,后-1入队列
    System.out.println("all elements: " + jedis.lrange(key, 0, -1));

    // 从队列的左边入队一个或多个元素
    jedis.lpush(key, "second element", "first element");// 先second

    // 从队列的右边出队一个元素
    System.out.println(jedis.rpop(key));

    // 从队列的左边出队一个元素
    System.out.println(jedis.lpop(key));
    System.out.println("all elements: " + jedis.lrange(key, 0, -1));

    // count > 0: 从头往尾移除值为 value 的元素,count为移除的个数。
    // count < 0: 从尾往头移除值为 value 的元素,count为移除的个数。
    // count = 0: 移除所有值为 value 的元素。
    jedis.lrem(key, 1, "cccc");
    System.out.println("all elements: " + jedis.lrange(key, 0, -1));

    // 删除区间以外的元素
    System.out.println(jedis.ltrim(key, 0, 2));
    System.out.println("all elements: " + jedis.lrange(key, 0, -1));
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值