天天看点

Redis和Jedis

Redis

redis的命令操作

通用命令:

1.查询全部的key:keys *

2.获取键key对应的value的类型:type key

3.删除指定key value:del key

redis的数据结构:key+value

其中key都是字符串

value有5种不同的类型:字符串类型、哈希类型、列表类型、集合类型、有序集合类型

1.字符串类型:

添加:set key value

获取:get key

删除:del key

2.哈希类型

添加:hset key field value

获取:hget key field

删除:hdel key field

获取全部:hgetall key

3.列表类型

lpush key value:将元素加入到列表左端

rpush key value:将元素加入到列表右端

lrange key start end:查询全部元素

lpop key :删除列表最左端元素,并将其返回

rpop key:删除最右端元素,将其返回

4.集合类型

添加:sadd key value

获取全部:smembers key

删除元素:srem key

5.有序集合类型(通过score的值进行排序)

添加元素:zadd key score value

删除元素:zrem key value

查询元素:zrange key start end

查询元素+score:zrange key start end withscores

public class JedisTest {
    /**
     * Jedis入门
     */
    @Test
    public void test(){
        //1.获取连接
        Jedis jedis=new Jedis("localhost",6379);
        //2.操作
        jedis.set("username","zhangsan");
        //3.关闭
        jedis.close();
    }

    /**
     * String类型的数据结构
     */
    @Test
    public void test2(){
        //1.获取连接,连接本机时可以不写参数
        Jedis jedis=new Jedis();
        //2.操作
        jedis.set("username","zhangsan");
        String username = jedis.get("username");
        System.out.println(username);

        /**
         * 存储指定过期时间的 key value
         * 将activeCode:1234存入Redis,20秒时候会自动删除
         */
        jedis.setex("activeCode",20,"1234");
        //3.关闭
        jedis.close();
    }

    /**
     * Hash类型的数据结构
     */
    @Test
    public void test3(){
        //1.获取连接,连接本机时可以不写参数
        Jedis jedis=new Jedis();
        //2.操作
       jedis.hset("user","name","lisi");
       jedis.hset("user","age","12");

        String age = jedis.hget("user", "age");
        System.out.println(age);

        //获取全部
        Map<String, String> users = jedis.hgetAll("user");
        //遍历 使用keyset
        Set<String> keys = users.keySet();
        for (String key : keys) {
            String value = users.get(key);
            System.out.println(key+":"+value);
        }

        //3.关闭
        jedis.close();
    }
    /**
     * list类型的数据结构
     */
    @Test
    public void test4(){
        //1.获取连接,连接本机时可以不写参数
        Jedis jedis=new Jedis();
        //2.操作
       jedis.lpush("mylist","a","b","c");//从左边添加元素
        jedis.rpush("mylist","a","b","c");//从右边添加元素

        //根据范围获取全部数据
        List<String> mylist = jedis.lrange("mylist", 0, -1);
        System.out.println(mylist);

        //弹出操作
        String ele1 = jedis.lpop("mylist");
        System.out.println(ele1);

        String ele2 = jedis.rpop("mylist");
        System.out.println(ele2);

        List<String> mylist1 = jedis.lrange("mylist", 0, -1);
        System.out.println(mylist1);

        //3.关闭
        jedis.close();
    }


    /**
     * set类型的数据结构
     */
    @Test
    public void test5(){
        //1.获取连接,连接本机时可以不写参数
        Jedis jedis=new Jedis();
        //2.操作
        jedis.sadd("myset","迪丽热巴");
        jedis.sadd("myset","易烊千玺");
        jedis.sadd("myset","张艺兴");

        //根据范围获取集合
        Set<String> myset = jedis.smembers("myset");
        System.out.println(myset);

        //3.关闭
        jedis.close();
    }

    /**
     * sortedSet类型的数据结构
     */
    @Test
    public void test6(){
        //1.获取连接,连接本机时可以不写参数
        Jedis jedis=new Jedis();
        //2.操作
        jedis.zadd("sortSet",3,"地理");
        jedis.zadd("sortSet",5,"英语");
        jedis.zadd("sortSet",2,"化学");

        //获取元素
        Set<String> sortSet = jedis.zrange("sortSet", 0, -1);
        System.out.println(sortSet);
        //3.关闭
        jedis.close();
    }

}
           

redis的持久化

1.Redis是一个内存数据库,当Redis服务重启,获得电脑重启,数据就会丢失。我们可以将redis持久化的保存在硬盘的文件中。

2.Redis的持久化机制:

a.RDB:默认方式,不需要进行配置。默认使用这种机制

在间隔时间内,检测key 的变化情况,然后持久化数据

	方法:1.编辑redis-windows.conf文件

				2.重新启动redis服务器,并指定配置文件的名称

           D:\redis-2.8.9\redis-server.exe redis.windows.conf
           

b.AOF:使用日志的方式,可以记录每一条命令的操作。可以在每一次操作后,持久化数据

1.编辑 redis-windows.conf文件
			appendonly no  (关闭AOF)
			appendonly no    (开启AOF)
           

Jedis java客户端

一款java操作redis数据库的工具,导入jar包就可以操作redis中的数据。

Jedis连接池:JedisPool

1.创建JedisPool对象

2.调用getResource()方法获取Jedis连接

public class JedisPoolUtil {
    private static JedisPool jedisPool;

    //静态代码块,调用类时加载
    static {
        //加载配置文件
        InputStream in = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
        //创建properties
        Properties pro = new Properties();
        //关联文件
        try {
            pro.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取数据,设置到JedisPoolConfig中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));

        //初始化JedisPool
        jedisPool=new JedisPool(config,pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));

    }

    //连接的方法
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }

    public static void main(String[] args) {
        Jedis jedis = JedisPoolUtil.getJedis();
        System.out.println(jedis);
    }
}
           

继续阅读