Redis 应用场景

Redis应用场景

在这里插入图片描述

配置连接Redis

<!--redis客户端 jedis-->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.7.3</version>
    </dependency>
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Jedis的测试
 * Created by Peng 2018/10/27 10:35
 */
public class JedisDemo1 {

    @Test
    public void demo() {
        Jedis jedis = new Jedis("localhost", 6379);
        jedis.set("name", "ShuKe");
        String value = jedis.get("name");
        System.out.println(value);
        jedis.close();

    }

    /**
     * 连接池方式连接
     */
    @Test
    public void demo2() {
        //获得连接池的配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //设置最大连接数
        config.setMaxTotal(30);
        //设置最大空闲连接数
        config.setMaxIdle(10);
        //设置最大等待连接时间 毫秒
        config.setMaxWaitMillis(1000);

        //获取连接池
        JedisPool jedisPool = new JedisPool(config, "localhost", 6379);

        //获取核心对象
        Jedis jedis = null;

        try {
            //通过连接池获得对象
            jedis = jedisPool.getResource();
            jedis.set("age", "11");
            System.out.println(jedis.get("age"));

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
            if (jedisPool != null) {
                jedisPool.close();
            }
        }


    }
}

有序集合sorted -set

在这里插入图片描述

增删改
127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
127.0.0.1:6379> zadd mysort 100 zs
(integer) 0
127.0.0.1:6379> zadd mysort 60 tom
(integer) 1
127.0.0.1:6379> zscore mysort zs
"100"
127.0.0.1:6379> zcard mysort
(integer) 4
127.0.0.1:6379> zrem mysort tom ww
(integer) 2
127.0.0.1:6379> zcard mysort
(integer) 2
127.0.0.1:6379>
----------------------------------
范围,排序
127.0.0.1:6379> zadd mysort 80 jack 95 rose
(integer) 2
127.0.0.1:6379> zrange mysort 0 -1
1) "jack"
2) "ls"
3) "rose"
4) "zs"
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "jack"
2) "80"
3) "ls"
4) "80"
5) "rose"
6) "95"
7) "zs"
8) "100"
127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "zs"
2) "100"
3) "rose"
4) "95"
5) "ls"
6) "80"
7) "jack"
8) "80"
127.0.0.1:6379> zremrangebyrank mysort 0 4
(integer) 4
127.0.0.1:6379> zcard mysort
(integer) 0
127.0.0.1:6379> zadd mysort 80 zs 90 ls 100 ws
(integer) 3
127.0.0.1:6379> zremrangebyscore mysort 80 100 //根据分数范围删除
(integer) 3
127.0.0.1:6379> zrange mysort 0 -1
(empty list or set)
127.0.0.1:6379>
127.0.0.1:6379> zadd mysort 70 zs 80 ls 90 ww
(integer) 3
127.0.0.1:6379> zrangebyscore mysort 0 100 //根据分数范围查找
1) "zs"
2) "ls"
3) "ww"
127.0.0.1:6379> zrangebyscore mysort 0 100 limit 0 2
1) "zs"
2) "ls"
127.0.0.1:6379> zincrby mysort 3 ls
"83"
127.0.0.1:6379> zscore mysort ls
"83"
127.0.0.1:6379> zcount mysort 80 90
(integer) 2

1.缓存

存取常用数据结构:
http://www.runoob.com/redis/redis-commands.html

存取对象

使用到Protostuff序列化和反序列化

 	<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.12</version>
    </dependency>
     <!--protostuff的序列化依赖-->
    <dependency>
      <groupId>com.dyuproject.protostuff</groupId>
      <artifactId>protostuff-core</artifactId>
      <version>1.0.8</version>
    </dependency>
    <dependency>
      <groupId>com.dyuproject.protostuff</groupId>
      <artifactId>protostuff-runtime</artifactId>
      <version>1.0.8</version>
    </dependency>

    //redis存储Object
    @Test
    public void testEntiry() {
        User user = new User("ShuKe", 12);
        User user1 = new User("BeiTa", 22);

        Jedis jedis = new Jedis("localhost", 6379);

        HashMap map = new HashMap();
        map.put("user1", JSON.toJSONString(user));

        jedis.hmset("userMap", map);
        jedis.lpush("userList", JSON.toJSONString(user));
        jedis.lpush("userList", JSON.toJSONString(user1));
        jedis.close();
    }

    //redis读取Object
    @Test
    public void testGetEntiry() {
        Jedis jedis = new Jedis("localhost", 6379);

        String redisString = jedis.hget("userMap", "user1");

        //method 1
        JSONObject object = JSONObject.parseObject(redisString);
        String username = (String) object.get("userName");
        int age = (int) object.get("age");
        System.out.println(username + "," + age);

        //method 2
        List stringList = jedis.lrange("userList", 0, -1);
        for (Object s : stringList) {
            System.out.println(s);
        }
        jedis.close();
    }

    //存储序列化数据
    @Test
    public void testserializable() {
        Jedis jedis = new Jedis("localhost", 6379);
        User user = new User("Tina", 12);
        HashMap map = new HashMap();
        map.put("map","mapTest");
        user.setMap(map);

        Phone phone1 = new Phone(1887798879);
        Phone phone2 = new Phone(1887798876);
        List list= new ArrayList();
        list.add(phone1);
        list.add(phone2);
        user.setPhoneList(list);
        try {
            RuntimeSchema<User> schema
                    = RuntimeSchema.createFrom(User.class);
            String key = "user1";
            byte[] bytes = ProtostuffIOUtil.toByteArray(user, schema,
                    LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
            String result = jedis.set(key.getBytes(), bytes);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }
    }

    //取序列化数据
    @Test
    public void testGetserializable() {
        Jedis jedis = new Jedis("localhost", 6379);
        try {
            RuntimeSchema<User> schema
                    = RuntimeSchema.createFrom(User.class);
            User user = null;
            String key = "user1";
            byte[] bytes = jedis.get(key.getBytes());
            if (bytes != null) {
                //空对象
                user = schema.newMessage();
                ProtostuffIOUtil.mergeFrom(bytes, user, schema);
                //user被反序列化
            }
            System.out.println(JSON.toJSONString(user));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            jedis.close();
        }

    }

2.数据过期处理

 //数据过期处理
    @Test
    public void testTTl() {
        Jedis jedis = new Jedis("localhost", 6379);
        String key = "keyTime";
        jedis.set(key,"I will disapper after 60s!");

        //两种方式
        //jedis.expire(key,60);//60s后失效
        //jedis.setex(key+"1",40,"I will disapper after 40s!");

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(jedis.ttl(key));
        jedis.persist(key);//想让缓存永不过期

        System.out.println(jedis.ttl(key));
        System.out.println(jedis.ttl(key+"1"));
        jedis.close();
    }

更多内容:https://www.cnblogs.com/xuliangxing/p/7151812.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值