Redis, Jedis, SpringDataRedis

Redis

        redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 、MongoDB等。

Jedis

        Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用。可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis、SRP等等,推荐使用Jedis。

Spring Data Redis

        Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis,  JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。

spring-data-redis针对jedis提供了如下功能:
        1.连接池自动管理,提供了一个高度封装的“RedisTemplate”类
        2.针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
                ValueOperations:简单K-V操作
                SetOperations:set类型数据操作
                ZSetOperations:zset类型数据操作
                HashOperations:针对map类型的数据操作
                ListOperations:针对list类型的数据操作

Jedis使用

        Jedis jedis = getJedis();
		//�����ַ�
		jedis.set("name", "lisi");
		jedis.get("name");
		jedis.del("name");
		jedis.incr("num1");//key不存在,初始值为0,结果为1
		jedis.decr("num1");//key不存在,初始值为0,结果为-1
		jedis.incrBy("num", 5);//每次加5
		jedis.decrBy("num", 4);//每次减4
		jedis.set("name", "lisi");
		jedis.append("name", " & wangwu");//拼接字符串
		System.out.println(jedis.get("xxx"));
		
		//hashmap
		jedis.hset("myhash", "name", "tom");
		System.out.println(jedis.hget("myhash", "name"));
		
		Map<String, String> hash = new HashMap<String, String>();
		hash.put("age", "25");
		hash.put("sex", "man");
		jedis.hmset("myhash", hash );
		System.out.println(jedis.hmget("myhash", "age","sex"));
		jedis.hgetAll("myhash");
		jedis.hdel("myhash", "age");
		jedis.del("myhash");
		jedis.hincrBy("myhash", "age", 8);
		
		//list
		jedis.lpush("mylist", "a","b");//从左添加
		jedis.lpush("mylist", "1","2");
		jedis.rpush("mylist", "@","!");//从右添加
		System.out.println(jedis.llen("mylist"));//长度
		jedis.lpush("mylist2", "3","4");
		jedis.lpush("mylist2", "5","6");
		
		System.out.println(jedis.lrange("mylist", 0, -1));//获取从0到 倒数第一个数
		System.out.println(jedis.lrange("mylist2", 0, -1));
		jedis.rpoplpush("mylist", "mylist2");
		System.out.println(jedis.lrange("mylist", 0, -1));
		System.out.println(jedis.lrange("mylist2", 0, -1));
		
		jedis.lpop("mylist");//返回链表头部元素
		jedis.rpop("mylist");//返回链表尾部元素
		
		jedis.del("mylist");
		jedis.del("mylist2");
		
		
		//set
		jedis.sadd("myset", "2","1","3");
		jedis.sadd("myset2", "4","5","3");
		jedis.srem("myset", "2");//删除指定成员
		System.out.println(jedis.smembers("myset"));//获取所有成员
		System.out.println(jedis.smembers("myset2"));
		System.out.println(jedis.sismember("myset2", "1"));//判断1在myset2中是否存在
		
		System.out.println(jedis.sdiff("myset","myset2"));//A-B差集
		System.out.println(jedis.sinter("myset","myset2"));//AB交集
		System.out.println(jedis.sunion("myset","myset2"));//AB并集		
		
		//sortedset存储,sortedset每个成员会有一个分数,通过分数来为集合中的成员进行从小到大的排序
		jedis.zadd("mysort", 0, "zhangsan");
		jedis.zadd("mysort", 100, "lisi");
		jedis.zadd("mysort", 40, "wangwu");
		jedis.zadd("mysort", 70, "zhaoliu");
		jedis.zadd("mysort", 80, "liuqi");
		System.out.println(jedis.zscore("mysort", "wangwu"));
		jedis.zadd("mysort", 70, "wangwu");
		System.out.println(jedis.zscore("mysort", "wangwu"));
		
		System.out.println(jedis.zcard("mysort"));
		
		jedis.zrem("mysort", "lisi");//移除指定成员
		System.out.println(jedis.zscore("mysort", "lisi"));
		
		System.out.println(jedis.zrange("mysort", 0, -1));
		System.out.println(jedis.zrevrange("mysort", 0, -1));
		jedis.zremrangeByRank("mysort", 1, 2);//按照排名范围删除元素
		jedis.zremrangeByScore("mysort", 52, 85);//按照分数范围删除元素
		System.out.println(jedis.zrange("mysort", 0, -1));
		
		//keys的通用操作
		System.out.println(jedis.keys("mys*"));//正则
		System.out.println(jedis.keys("*"));//正则
		jedis.del("myhash");
		jedis.rename("num1", "num4");
		System.out.println(jedis.keys("*"));
		System.out.println(jedis.type("mysort"));

		JedisPubSub jedisPubSub = new JedisPubSub() {};
		jedis.subscribe(jedisPubSub , "cctv");//订阅频道
		jedis.publish("cctv", "cctv hello");//在指定的频道中发布消息
		

Spring Data Redis使用demo见svn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值