用java操作Redis数据库

java操作Redis

原来mysql需要使用jdbc,现在需要redis的一个java客户端jedis。
jedis是客户端,而reids是服务器。使用jedis这个java客户端操作redis数据库。

1.导包
在这里插入图片描述
2.操作方式
①普通方法

 @Test
    public void setTest() throws Exception{
        Jedis jedis=new Jedis("127.0.0.1");//获取连接
        jedis.set("name","lisi");//添加数据
        jedis.close();//关闭连接
           }

    @Test
    public void getTest(){
        Jedis jedis=new Jedis("127.0.0.1");
        System.out.println(jedis.get("name"));//获取数据
        jedis.close();
    }

② 连接池

@Test
    public void testName(){
        JedisPoolConfig poolConfig=new JedisPoolConfig();
        poolConfig.setMaxIdle(2);//最小连接(空闲最大连接)
        poolConfig.setMaxTotal(10);//最大连接数
        poolConfig.setMaxWaitMillis(2*1000);//最大等待时间
        poolConfig.setTestOnBorrow(true);//获取连接时测试连接是否畅通
        JedisPool jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379,2*1000,"123456");
        Jedis jedis=jedisPool.getResource();
        jedis.set("age","16");
        System.out.println(jedis.get("age"));
        jedis.close();
    }

3.抽取工具类

public enum  PoolConfigUtil {
    INSTANCE;
    private static JedisPool pool = null;

    static {
        JedisPoolConfig poolConfig=new JedisPoolConfig();
        poolConfig.setMaxIdle(2);//最小连接(空闲最大连接)
        poolConfig.setMaxTotal(10);//最大连接数
        poolConfig.setMaxWaitMillis(2*1000);//最大等待时间
        poolConfig.setTestOnBorrow(true);//获取连接时测试连接是否畅通
        pool=new JedisPool(poolConfig,"127.0.0.1",6379,2*1000,"123456");
    }

    public Jedis getJedis(){
        return pool.getResource();
    }

    public void closeJdeisPool(Jedis jedis){
        if(jedis!=null){
            jedis.close();
        }
    }
}

4.对key值得操作

 /**
     * Key的操作
     * @throws Exception
     */
    @Test
    public void testName3() throws  Exception{
        Jedis jedis = PoolConfigUtil.INSTANCE.getJedis();

        System.out.println(jedis.exists("sex"));//判断key是否存在 false

        Set<String> keys = jedis.keys("*");
        System.out.println(keys);//获取所有keys [name, age]

        jedis.del("age");//删除指定key
        Set<String> keys2 = jedis.keys("*");
        System.out.println(keys2);//获取所有keys [name]

        jedis.expire("name",10);//设置key的生存时间
    }

5.对String的操作

 /**
     * String的操作
     */
    @Test
    public void testName4(){
        Jedis jedis = PoolConfigUtil.INSTANCE.getJedis();

        jedis.set("name","啦啦啦");
        System.out.println(jedis.get("name"));//啦啦啦

        jedis.append("name","呵呵呵");//追加字段
        System.out.println(jedis.get("name"));//啦啦啦呵呵呵

        jedis.del("name");
        System.out.println(jedis.get("name"));//null
    }

6.对list的操作

 /**
     * List操作
     */
    @Test
    public void testName5(){
        Jedis jedis = PoolConfigUtil.INSTANCE.getJedis();

        jedis.lpush("list1","李四","张三","王五");//添加list集合并赋值
        /**
         * 获取集合中所有值
         * start:开始出下标
         * end:结尾处下标
         */
        List<String> list1 = jedis.lrange("list1", 0, -1);
        System.out.println(list1);//[王五, 张三, 李四]
        /**
         * 删除指定值
         * count>0:从上到下依次删除count个
         * count<0:从下到上依次删除count个
         * count00:从下到上依次删除所有
         */
        jedis.lrem("list1",0,"李四");//删除指定值 count>0:从上到下依次删除count个
        List<String> list2 = jedis.lrange("list1", 0, -1);
        System.out.println(list2);//[王五, 张三]

        jedis.lpush("list2","1","3","2","6");
        List<String> list3 = jedis.sort("list2");
        System.out.println(list3);
    }

7.对set的操作

 /**
     * set操作
     */
    @Test
    public void testName6(){
        Jedis jedis = PoolConfigUtil.INSTANCE.getJedis();

        jedis.sadd("set1","王五","赵柳","孙琦");//添加
        Set<String> set1 = jedis.smembers("set1");
        System.out.println(set1);

        jedis.sadd("set2","李四","王五","赵柳1","孙琦1");//添加
        Set<String> set2 = jedis.smembers("set2");
        System.out.println(set2);

        jedis.srem("set1","王五");//删除
        Set<String> set3 = jedis.smembers("set1");
        System.out.println(set3);

        Set<String> sinter = jedis.sinter("set1", "set2");//两个set集合中共有的
        System.out.println(sinter);

    }

8.对hash的操作

/**
     * hash操作
     */
    @Test
    public void testName7(){
        Jedis jedis = PoolConfigUtil.INSTANCE.getJedis();

        jedis.hset("map1","name","李四");//设置或修改
        jedis.hset("map1","sex","男");//设置或修改

        System.out.println(jedis.hget("map1","name"));//获取

        jedis.hincrBy("map1","age",2);//自增
        System.out.println(jedis.hget("map1","age"));

        Set<String> map1 = jedis.hkeys("map1");//获取所有key值
        System.out.println(map1);//[name, age, sex]

        List<String> map11 = jedis.hvals("map1");//获取所有value值
        System.out.println(map11);//[name, age, sex]

        Map<String, String> map12 = jedis.hgetAll("map1");//获取所有值
        System.out.println(map12);

        jedis.hdel("map1","sex");//删除


    }

9.数组字母排序

/**
     * 数字字母排序
     * @throws Exception
     */
    @Test
    public void testJedisList() throws Exception{
        Jedis jedis = PoolConfigUtil.INSTANCE.getJedis();
        //清空当前数据库
        jedis.flushDB();
        jedis.lpush("nums","12","14","6","9","10","13");
        System.out.println("nums原始的位置:"+jedis.lrange("nums",0,-1));
        System.out.println("nums排序之后的值 升序:"+jedis.sort("nums"));

        SortingParams sortingParams = new SortingParams();
        sortingParams.desc();
        System.out.println("nums排序之后的值:"+jedis.sort("nums",sortingParams));

        jedis.lpush("letters","a","d","f","c","k","e");
        SortingParams sortingParams1 = new SortingParams();
        sortingParams1.alpha();
        System.out.println("字母排序:"+jedis.sort("letters",sortingParams1));

        PoolConfigUtil.INSTANCE.closeJdeisPool(jedis);
    }

持久化

1.Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.
2.RDB模式
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.
如何关闭 rdb 模式:

 # save ""
 #save 900 1 //至少在900秒的时间段内至少有一次改变存储同步一次
 # save xxx 
 # save 60 10000

3.AOF追加模式
AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
如何开启aof模式:
appendonly yes //yes 开启,no 关闭
appendfsync always //每次有新命令时就执行一次fsync
这里我们启用 everysec appendfsync everysec //每秒 fsync 一次
appendfsync no //从不fsync(交给操作系统来处理,可能很久才执行一次fsync)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值