Java使用Redis

1.下载 jedis.jar

2. 五个数据类型String List Hash Set SortedSet 操作

public class RedisTest {


    public static void main(String[] args) throws InterruptedException {
        RedisTest redisTest = new RedisTest();
        redisTest.KeyTest();

    }
   public void StringTest(){
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        //查看服务是否运行
        System.out.println("Server is running: "+jedis.ping());

        //String

        //添加
        jedis.set("food","fish");
        System.out.println(jedis.get("food"));
        //修改
        jedis.append("food","apple");
        System.out.println(jedis.get("food"));
        //覆盖
        jedis.set("food","fish2");
        System.out.println(jedis.get("food"));
        //删除
        jedis.del("food");
        System.out.println(jedis.get("food"));

        //同时设置
        jedis.mset("name","lwx","age","12");
        System.out.println(jedis.mget("name","age"));

    }
    public void MapTest(){
        Jedis jedis = new Jedis("localhost");
        System.out.println("Server is running: "+jedis.ping());
        //单条
        jedis.hset("hash","key","v");
        jedis.hget("hash","key");

        //多条
        Map<String,String> map = new HashMap<>();
        map.put("name", "lwx");
        map.put("age","12");
        jedis.hmset("map",map);
        System.out.println(jedis.hmget("map","name"));//返回List

        //获取hash所有数据
        System.out.println(jedis.hgetAll("map"));//返回map类型

        //其他
        System.out.println(jedis.hlen("map"));//map键的个数
        System.out.println(jedis.exists("map"));//是否存在key为map的记录
        System.out.println(jedis.hkeys("map"));//返回map对象中的所有key
        System.out.println(jedis.hvals("map"));//返回map对象中的所有value

        //遍历
        Iterator<String> iter=jedis.hkeys("map").iterator();
        while (iter.hasNext()){
            String key = iter.next();
            System.out.println(key+":"+jedis.hmget("map",key));
        }

        //删除
        jedis.hdel("map","name");
    }

    public void ListTest() {
        Jedis jedis = new Jedis("localhost");

        //添加(添加到头部)
        jedis.lpush("list", "Redis");
        jedis.lpush("list", "Mongodb");
        jedis.lpush("list", "Mysql");

        //添加(尾部)
        jedis.rpush("list","right");

        // 获取存储的数据并输出
        List<String> list = jedis.lrange("list", 0, 5);
        for (int i = 0; i < list.size(); i++) {
            System.out.println("Stored string in redis:: " + list.get(i));
        }

        System.out.println(jedis.llen("list"));//长度

        //左弹出
        jedis.lpop("list");
        //右弹出
        jedis.rpop("list");

        //删除 (key,个数,值)
        jedis.lrem("list",1,"Mysql");
    }

    public void SetTest(){
        Jedis jedis = new Jedis("localhost");
        //添加
        jedis.sadd("sname","meepo");
        jedis.sadd("sname","dota");
        jedis.sadd("sname","poofu");
        jedis.sadd("sname","noname");

        //移除
        jedis.srem("sname","noname");
        //获取所有加入的member
        System.out.println(jedis.smembers("sname"));//返回set
        System.out.println(jedis.sismember("sname", "meepo"));//判断 member 是否是集合的元素
        System.out.println(jedis.srandmember("sname"));//返回随机一个member
        System.out.println(jedis.scard("sname"));//返回集合的元素个数
    }
    public void SortedSetTest(){
        Jedis jedis =new Jedis("localhost");

        Map<String ,Double> map = new HashMap<>();
        map.put("a",60D);
        map.put("b",70D);

        jedis.zadd("score",map);
        Set<String> set = jedis.zrange("score",0,2);
        System.out.println(set);
        //长度
        System.out.println(jedis.zcard("score"));
        //删除
        jedis.zrem("score","a","b");


    }
}

3.键操作和失效时间

 /**
     * key操作
     * @throws InterruptedException
     */
    public void KeyTest() {
        Jedis jedis = new Jedis("localhost");
        //key数量
        System.out.println(jedis.dbSize());
        //返回当前库中所有的key 正则表达式
        System.out.println(jedis.keys("*"));

        //删除key为sanmdde的对象  删除成功返回1 删除失败(或者不存在)返回 0
        System.out.println(jedis.del("sanmdde"));

        //jedis 排序
        //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
        jedis.del("a");//先清除数据,再加入数据进行测试
        jedis.rpush("a", "1");
        jedis.lpush("a","6");
        jedis.lpush("a","3");
        jedis.lpush("a","9");
        System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
        System.out.println(jedis.sort("a")); //[1, 3, 6, 9]  //输入排序后结果
        System.out.println(jedis.lrange("a",0,-1));
    }

    //    层级目录
    public void DirTest(){
        Jedis jedis = new Jedis("localhost");
        jedis.set("login:user0:item0","apple");
        System.out.println(jedis.get("login:user0:item0"));
    }

    /**
     * key失效时间
     */
    public void ExpireTest(){
        Jedis jedis = new Jedis("localhost");
        jedis.set("code","test");
        //设置失效时间 秒
        jedis.expire("code",10);
        //设置失效时间 毫秒
        jedis.pexpire("code",10000);
        //指定key的存活(有效时间) 时间为秒
        jedis.setex("code", 10, "test");
        //毫秒
        jedis.psetex("code", 1000, "test");
        //返回给定key的有效时间,如果是-1则表示永远有效 -2已失效
        System.out.println(jedis.ttl("code"));
        System.out.println(jedis.pttl("code"));//毫秒

        SetParams setParams = SetParams.setParams();

        //不存在才能成功
        setParams.nx();
        //存在才能成功
        setParams.xx();
        //秒
        setParams.ex(5);
        //毫秒
        setParams.px(20000);
        jedis.set("code","test",setParams);

    }

层级目录

4.事务操作

使用set指定key和value后,执行提交事务会存储数据库中,回滚后则set无效

/**
     * 事务
     */
    public void transactionTest(){
        Jedis jedis = new Jedis("localhost");
        //开启事务
        Transaction transaction = jedis.multi();
        transaction.set("tran2","test");
        //提交事务
       // transaction.exec();
        //事务回滚
        transaction.discard();
    }

5.bity数组操作

/**
     * bite数组
     */
    public void BytesTest(){
        User user = new User();
        user.setId(2);
        user.setUsername("lwx");
        user.setPassword("123456");

        byte[] userKey = SerializeUtil.serialize("user:" + user.getId());
        byte[] userValue = SerializeUtil.serialize(user);

        Jedis jedis = new Jedis();
        jedis.set(userKey,userValue);
        byte[] bytes = jedis.get(userKey);

        User u = (User) SerializeUtil.unserialize(bytes);
        System.out.println(u.getUsername());
    }

序列化工具类


public class SerializeUtil {

    /**
     * java对象转化为byte数组
     */
    public static byte[] serialize(Object object){
        ObjectOutputStream oos =null;
        ByteArrayOutputStream baos = null;
        try{
            baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            oos.writeObject(object);
            byte[] bytes = baos.toByteArray();
            return bytes;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * byte数组转化为java对象
     */
    public static Object unserialize(byte[] bytes){
        if(bytes == null){
            return null;
        }
        ByteArrayInputStream bais = null;
        try{
            bais = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            return ois.readObject();
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}
posted @   lwx_R  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示