linux下小试redis demo

先启动  redis-server /etc/redis/redis.conf 

package com.test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 *
 * @author luozhonghua
 *
 */
public class RedisClient {

	private Jedis jedis;// 非切片额客户端连接
	private JedisPool jedisPool;// 非切片连接池
	private ShardedJedis shardedJedis;// 切片额客户端连接
	private ShardedJedisPool shardedJedisPool;// 切片连接池

	public RedisClient() {
		initialPool();
		initialShardedPool();
		shardedJedis = shardedJedisPool.getResource();
		jedis = jedisPool.getResource();

	}

	/**
	 * 初始化非切片池
	 */
	private void initialPool() {
		// 池基本配置
		JedisPoolConfig config = new JedisPoolConfig();

		config.setMaxActive(20);
		config.setMaxIdle(5);
		config.setMaxWait(1000l);
		config.setTestOnBorrow(false);
         System.out.println("begin...");
		jedisPool = new JedisPool(config, "127.0.0.1", 6379);
		 System.out.println("end...");
	}

	/**
	 * 初始化切片池
	 */
	private void initialShardedPool() {
		// 池基本配置
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxActive(20);
		config.setMaxIdle(5);
		config.setMaxWait(1000l);
		config.setTestOnBorrow(false);
		// slave链接
		List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
		shards.add(new JedisShardInfo("127.0.0.1", 6379, "master"));

		// 构造池
		shardedJedisPool = new ShardedJedisPool(config, shards);
	}

	public void show() {
		KeyOperate();
		StringOperate();
		ListOperate();
		SetOperate();
		SortedSetOperate();
		HashOperate();
		jedisPool.returnResource(jedis);
		shardedJedisPool.returnResource(shardedJedis);
	}

	private void KeyOperate() {

	        System.out.println("======================key==========================");
	        // 清空数据
	        System.out.println("清空库中所有数据:"+jedis.flushDB());
	        // 判断key否存在
	        System.out.println("判断key999键是否存在:"+shardedJedis.exists("key999"));
	        System.out.println("新增key001,value001键值对:"+shardedJedis.set("key001", "value001"));
	        System.out.println("判断key001是否存在:"+shardedJedis.exists("key001"));
	        // 输出系统中所有的key
	        System.out.println("新增key002,value002键值对:"+shardedJedis.set("key002", "value002"));
	        System.out.println("系统中所有键如下:");
	        Set<String> keys = jedis.keys("*");
	        Iterator<String> it=keys.iterator() ;
	        while(it.hasNext()){
	            String key = it.next();
	            System.out.println(key);
	        }
	        // 删除某个key,若key不存在,则忽略该命令。
	        System.out.println("系统中删除key002: "+jedis.del("key002"));
	        System.out.println("判断key002是否存在:"+shardedJedis.exists("key002"));
	        // 设置 key001的过期时间
	        System.out.println("设置 key001的过期时间为5秒:"+jedis.expire("key001", 5));
	        try{
	            Thread.sleep(2000);
	        }
	        catch (InterruptedException e){
	        }
	        // 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1
	        System.out.println("查看key001的剩余生存时间:"+jedis.ttl("key001"));
	        // 移除某个key的生存时间
	        System.out.println("移除key001的生存时间:"+jedis.persist("key001"));
	        System.out.println("查看key001的剩余生存时间:"+jedis.ttl("key001"));
	        // 查看key所储存的值的类型
	        System.out.println("查看key所储存的值的类型:"+jedis.type("key001"));
	        /*
	         * 一些其他方法:1、修改键名:jedis.rename("key6", "key0");
	         *             2、将当前db的key移动到给定的db当中:jedis.move("foo", 1)
	         */

	}
	private void StringOperate()
    {
        System.out.println("======================String_1==========================");
        // 清空数据
        System.out.println("清空库中所有数据:"+jedis.flushDB());

        System.out.println("=============增=============");
        jedis.set("key001","value001");
        jedis.set("key002","value002");
        jedis.set("key003","value003");
        System.out.println("已新增的3个键值对如下:");
        System.out.println(jedis.get("key001"));
        System.out.println(jedis.get("key002"));
        System.out.println(jedis.get("key003"));

        System.out.println("=============删=============");
        System.out.println("删除key003键值对:"+jedis.del("key003"));
        System.out.println("获取key003键对应的值:"+jedis.get("key003"));

        System.out.println("=============改=============");
        //1、直接覆盖原来的数据
        System.out.println("直接覆盖key001原来的数据:"+jedis.set("key001","value001-update"));
        System.out.println("获取key001对应的新值:"+jedis.get("key001"));
        //2、直接覆盖原来的数据
        System.out.println("在key002原来值后面追加:"+jedis.append("key002","+appendString"));
        System.out.println("获取key002对应的新值"+jedis.get("key002")); 

        System.out.println("=============增,删,查(多个)=============");
        /**
         * mset,mget同时新增,修改,查询多个键值对
         * 等价于:
         * jedis.set("name","ssss");
         * jedis.set("jarorwar","xxxx");
         */
        System.out.println("一次性新增key201,key202,key203,key204及其对应值:"+jedis.mset("key201","value201",
                        "key202","value202","key203","value203","key204","value204"));
        System.out.println("一次性获取key201,key202,key203,key204各自对应的值:"+
                        jedis.mget("key201","key202","key203","key204"));
        System.out.println("一次性删除key201,key202:"+jedis.del(new String[]{"key201", "key202"}));
        System.out.println("一次性获取key201,key202,key203,key204各自对应的值:"+
                jedis.mget("key201","key202","key203","key204"));
        System.out.println();

        //jedis具备的功能shardedJedis中也可直接使用,下面测试一些前面没用过的方法
        System.out.println("======================String_2==========================");
        // 清空数据
        System.out.println("清空库中所有数据:"+jedis.flushDB());       

        System.out.println("=============新增键值对时防止覆盖原先值=============");
        System.out.println("原先key301不存在时,新增key301:"+shardedJedis.setnx("key301", "value301"));
        System.out.println("原先key302不存在时,新增key302:"+shardedJedis.setnx("key302", "value302"));
        System.out.println("当key302存在时,尝试新增key302:"+shardedJedis.setnx("key302", "value302_new"));
        System.out.println("获取key301对应的值:"+shardedJedis.get("key301"));
        System.out.println("获取key302对应的值:"+shardedJedis.get("key302"));

        System.out.println("=============超过有效期键值对被删除=============");
        // 设置key的有效期,并存储数据
        System.out.println("新增key303,并指定过期时间为2秒"+shardedJedis.setex("key303", 2, "key303-2second"));
        System.out.println("获取key303对应的值:"+shardedJedis.get("key303"));
        try{
            Thread.sleep(3000);
        }
        catch (InterruptedException e){
        }
        System.out.println("3秒之后,获取key303对应的值:"+shardedJedis.get("key303")); 

        System.out.println("=============获取原值,更新为新值一步完成=============");
        System.out.println("key302原值:"+shardedJedis.getSet("key302", "value302-after-getset"));
        System.out.println("key302新值:"+shardedJedis.get("key302"));

        System.out.println("=============获取子串=============");
        System.out.println("获取key302对应值中的子串:"+shardedJedis.getrange("key302", 5, 7));
    }

	private void ListOperate() {

	}

	private void SetOperate() {

	}

	private void SortedSetOperate() {

	}

	private void HashOperate() {

	}

	public static void main(String[]args){
		  new RedisClient().show();
	}
}
时间: 2024-08-18 18:03:24

linux下小试redis demo的相关文章

Linux下编译redis和phpredis的方法_php技巧

本文讲述了Linux下编译redis和phpredis的方法.分享给大家供大家参考,具体如下: 1.准备工作 下载软件:本站下载地址. 操作系统:CentOS 5.5 redis 版本:redis-2.6.9 2.编译安装 tar zxvf redis-2.6.9.tar.gz //解压 cd redis-2.6.9 make //编译 如果出现如下错误: zmalloc.o: In function `zmalloc_used_memory': /data/redis-2.6.9/src/zm

Linux下安装Redis并设置相关服务_Redis

一.简介 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器. Redis 优势          异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录.          支持丰富的数据类型:Redi

Linux下安装Redis教程详解

安装Reids   Redis下载地址:http://www.redis.io/download # wget http://download.redis.io/releases/redis-2.8.13.tar.gz # cd redis-2.8.13/ # make zmalloc.o: In function `zmalloc_used_memory': /usr/local/webserver/redis-2.8.13/src/zmalloc.c:226: undefined refer

MAC/linux下安装REDIS数据库的教程

去redis官网(http://redis.io/download)自行下载安装包解压缩到本地文件夹,比如放在Mac应用程序文件夹(/Applications/),在终端进入redis文件夹. 需要进行编译才能运行Mac端的Redis,编译方法是: 进入src文件夹,我们可以看到Makefile文件,在Mac终端输入: make 这个命令,可见终端滚动显示的编译信息,稍等片刻就编译完成.编译就是把许多源文件编译成二进制可运行的程序,跟windows的exe一样. 编译完成后,在src文件夹中会多

linux下安装redis和phpredis模块教程

Redis 是一个开源.支持网络.基于内存.键值对存储数据库,使用 ANSI C 编写.其开发由 VMware 主持.根据月度排行网站 DB-Engines.com 的数据显示,Redis 是最流行的键值对存储数据库. redis的下载及安装: @ubuntu:/$ mkdir /usr/local/redis @ubuntu:/$ cd /usr/local/redis @ubuntu:/$ wget http://redis.googlecode.com/files/redis-2.4.2.

Linux下redis安装与使用

   redis官网地址:http://www.redis.io/     最新版本:2.8.3      在Linux下安装Redis非常简单,具体步骤如下(官网有说明):      1.下载源码,解压缩后编译源码. $ wget http://download.redis.io/releases/redis-2.8.3.tar.gz $ tar xzf redis-2.8.3.tar.gz $ cd redis-2.8.3 $ make      2.编译完成后,在Src目录下,有四个可执行

Linux下Redis安装配置教程_Redis

redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的.项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis.memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求:但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势(memcached只能重新加

Linux下php安装Redis扩展的方法_服务器其它

本文实例讲述了Linux下php安装Redis扩展的方法.分享给大家供大家参考,具体如下: 注意:目录的权限   chomd 777 -R 1.安装redis 下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz 上传phpredis-2.2.4.tar.gz到/usr/local/src目录 cd /usr/local/src #进入软件包存放目录 tar zxvf phpredis-2.2.4.tar.gz #解压 cd

Oracle8i在linux下的安装(中文)

oracle|中文 Oracle8i在linux下的安装(中文)  转摘自flyfox的站点  发布时间:2001年01月04日  详细信息:准备工作--安装Oracle服务器 我认为Microsoft Windows是个不错的操作系统,它在市场方面获得了空前的成功,并造就了盖茨.巴尔默等百亿富翁.它简单易用,得到了广泛地普及,几乎每个计算机爱好者都会操作Windows,几乎每个程序员都会Windows编程.目前为了占领市场,排挤Linux,Windows2000在PC的预装费用从以前Windo