NoSQL数据库之-------Redis(二)

上文(http://www.imooc.com/article/16523)介绍了Redis概念,以及数据类型,安装等,此文将会介绍Java操作redis数据库的数据类型的一些实例
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
下面将会给出实例:
1.Java操作Redis键(key)

package com.redis1;

import java.util.List;

import redis.clients.jedis.Jedis;

/**
 * Redis keys实例
 * @author dell
 *
 */
public class RedisKeys {
    public static void main(String[] args) {
        //连接redis本地服务
        Jedis jedis = new Jedis("127.0.0.1");
        System.out.println("redis本地服务连接成功!");
        /*Redis Bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。
          BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,
                       原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
        */
        System.out.println(jedis.bgsave());
        //Redis Echo 命令用于打印给定的字符串。
        System.out.println(jedis.echo("redis"));
        //Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。
        System.out.println(jedis.flushAll());
        //Redis Flushdb 命令用于清空当前数据库中的所有 key。
        System.out.println(jedis.flushDB());
        /*
         Redis Ping 命令使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。
                     通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。
         */
        System.out.println(jedis.ping());
        //Redis Info 命令以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。
        System.out.println("\ninfo----->"+jedis.info());
        //Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。
        System.out.println(jedis.randomKey());
        //Redis Save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
        System.out.println(jedis.save());
        //Redis Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。
        System.out.println(jedis.unwatch());
        /*
          Redis Multi 命令用于标记一个事务块的开始。
                      事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
         */

        System.out.println(jedis.multi());
        /*Redis Quit 命令用于关闭与当前客户端与redis服务的连接。
        一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。*/
        System.out.println(jedis.quit());
    }

}

2.Java操作Redis列表(list)

package com.redis1;

import java.util.List;

import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;

/**
 * redis list数据类型
 * 
 * @author dell
 *
 */
public class RedisList {

    public static void main(String[] args) {
        // 连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("redis本地服务连接成功!");
        /*
         * lpush 表示从list的头部插入元素 rpush 表示从list的尾部插入元素 linsert 在列表的某个元素前或者后插入元素
         * index 表示列表中index位置的元素 llen 返回列表的长度 lpop list 0 -1
         * 表示从mylist列表的头部开始删除所有元素 rpop list 0 -1 表示从mylist列表的尾部开始删除所有元素 lrange
         * list 0 -1 //使用lrange取出元素 0表示从头部第一个元素,-1表示从尾部第一个元素取出,lrange mylist 0
         * -1 表示取出mylist中的所有数据
         */
        // 存储数据到列表中
        jedis.lpush("SQL", "Redis");
        jedis.lpush("SQL", "Mongodb");
        jedis.lpush("SQL", "Mysql");
        jedis.linsert("SQL", BinaryClient.LIST_POSITION.BEFORE, "MySql", "java");
        jedis.rpush("SQL", "SqlServer");
        jedis.rpush("SQL", "Oracle");

        jedis.linsert("SQL", BinaryClient.LIST_POSITION.BEFORE, "MySql", "java");
        // Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。
        System.out.println(jedis.lpushx("SQL", "Redis1"));
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("SQL", 0, -1);
        for (int i = 0; i < list.size(); i++) {
            System.out.println("Stored string in redis:: " + list.get(i));
        }

        // 获得列表的长度
        System.out.println("redis列表长度为:" + jedis.llen("SQL"));
        // 删除列表中的元素
        jedis.del("SQL");
        System.out.println("删除了redis列表!");
        // 获得列表的长度
        System.out.println("redis列表长度为:" + jedis.llen("SQL"));
        // 列表下标从0开始
        System.out.println("redis列表下标为5的元素是:" + jedis.lindex("SQL", 5));
        /*
         * Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 下标 0
         * 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2
         * 表示列表的倒数第二个元素,以此类推。
         */
        System.out.println(jedis.ltrim("SQL", 0, 4));

    }

}

3.Java操作Redis集合(set)

package com.redis1;

import java.util.Set;

import redis.clients.jedis.Jedis;

/**
 * Redis set数据类型
 * @author dell
 *
 */
public class RedisSet {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1",6379);

        //set方法用于向redis数据库中添加设置数据
        jedis.set("k1", "v1");
        jedis.set("k2", "v2");
        jedis.set("k3", "v3");
        //get方法用于获取某个键所对应的值
        System.out.println(jedis.get("k3"));
        //del方法用于删除某个键所对应的值
        System.out.println(jedis.del("k1"));
        //getSet方法用户获取某个键所对应的值,键不存在,返回null;键存在,返回对应的值
        System.out.println(jedis.getSet("k4", "v4"));
        /*getrange(key, startOffset, endOffset)方法用于获取存在在key中字符串的子字符串
         字符串的截取范围由start和end两个偏移量决定
        */
        System.out.println(jedis.getrange("k2", 1, -1));
        //lpop方法用于移除并返回列表的第一个元素
        System.out.println(jedis.lpop("k1"));
        //rpop方法用于移除并返回列表的最后一个元素
        System.out.println(jedis.rpop("k5"));
        //返回集合的长度
        Set<String> sets = jedis.keys("*");
        System.out.println(sets.size());

    }

}

4.Java操作Redis字符串(String)

package com.redis1;

import redis.clients.jedis.Jedis;

/**
 * Redis String数据类型
 * @author dell
 *
 */
public class RedisString {

    public static void main(String[] args) {
        //连接本地redis服务
        Jedis jedis = new Jedis("127.0.0.1");
        System.out.println("redis服务连接成功!");

        //设置redis字符串数据
        jedis.set("type", "string");
        //获取存储的数据并输出
        System.out.println("redis存储的值为:"+jedis.get("type"));

    }

}

5.Java 操作Redis排序

package com.redis2;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;

/**
 * Redis排序
 * @author dell
 *
 */
public class Java_RedisTest {
    private Jedis jedis;

    @Before
    public void setup(){
        //连接redis服务器
        jedis = new Jedis("127.0.0.1",6379);
        //权限认证
        //jedis.auth("admin");
    }

    @Test
    public void test() throws InterruptedException{
        //jedis排序
        //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)  
        jedis.del("a");   //先清除数据,在加入数据进行测试
        jedis.rpush("a", "1");
        jedis.rpush("a", "6");
        jedis.rpush("a", "4");
        jedis.rpush("a", "2");
        jedis.rpush("a", "5");
        jedis.rpush("a", "3");
        //排序前
        System.out.println("排序前:"+jedis.lrange("a", 0, -1));
        //排序
        System.out.println("排序:"+jedis.sort("a"));
        //排序后
        System.out.println("排序后:"+jedis.lrange("a", 0, -1));
    }
}

更多实例代码,在此不再一一列举,感兴趣的朋友,实例代码见:
https://github.com/JavaCodeMood/redis1

多谢各位朋友的支持!

点赞