Redis 数据类型

Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1. String 

String 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。value其实不仅是String,也可以是数字。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

2. Hash

Hash 是一个键值(key => value)对集合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

常用命令:hget,hset,hgetall 等。

//hash实例,适合存储对象
        HashMap<String,String> map = new HashMap<String, String>();
        map.put("name","hlf");
        map.put("sex","女");
        map.put("age","21");
        jedis.hmset("hlf",map);
        jedis.hset("hlf","major","software");
        Map<String,String> map1 = jedis.hgetAll("hlf");
        String age = jedis.hget("hlf","age");
        System.out.println(map1);
        System.out.println(age);

 

3. List 

list就是链表,在redis实现为一个双向链表,可以从两边插入、删除数据。

应用场景可以有微博的关注列表、粉丝列表、消息列表等。

有一个lrange函数,可以从某个元素开始读取多少个元素,可用来实现分页功能。

/*list实例,双向链表结构,适合做消息队列,
        但其实真正应用中一般都会用专门做消息队列的中间件例如RabbitMQ*/
        jedis.lpush("201宿舍","hlf");
        jedis.lpush("201宿舍","css");
        jedis.lpush("201宿舍","ty");
        jedis.lpush("201宿舍","jy");
        List<String> name = jedis.lrange("201宿舍",0,3);
        for (String person:name
             ) {
            System.out.print(person+" ");
        }

4. Set

Set是string类型的无序集合。集合是通过hashtable实现的,概念和数学中个的集合基本类似,可以交集,并集,差集等等,set中的元素是没有顺序的。所以添加,删除,查找的复杂度都是O(1)。

应用场景:

      因为set集合支持查缉、并集操作,因此适合做共同好友等功能

             获取某段时间所有数据去重值, 这个使用Redis的set数据结构最合适了,只需要不断地将数据往set中扔就行了,set意为集合,所以会自动排重。

//set实例
        jedis.sadd("set","hhh");
        jedis.sadd("set","ff");
        jedis.sadd("set","hhh");
        System.out.println(jedis.smembers("set"));
        jedis.sadd("set1","oo");
        jedis.sadd("set1","ff");
        System.out.println("交集:"+jedis.sinter("set","set1"));
        System.out.println("合集:"+jedis.sunion("set","set1"));

5. SortSet 

Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

//sorted set实例
        jedis.zadd("set2",4,"redis");
        jedis.zadd("set2",3,"mysql");
        jedis.zadd("set2",2,"kk");
        jedis.zadd("set2",1,"redis");
        System.out.println(jedis.zrangeByScore("set2",0,4));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值