zoukankan      html  css  js  c++  java
  • Reids笔记

    Redis 是基于key-value型的数据库,其中value支持的数据类型可包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)

    1.安装

    这里基于window下安装的redis,安装步骤就不多说了,主要记录一下redis的认证登录。

    以下介绍的是修改配置文件,当然也可以直接用命令修改密码。

    首先打开redis.conf文件,修改这里的requirepass 密码,我这里设置的是master

    然后将文件放在redis-server.exe同级目录下

    要使配置文件设置的密码在服务器启动时生效:redis-server redis.conf

    启动一个客户端

    输入keys * 出错:(error) ERR operation not permitted

    再输入 auth master 认证通过

    OK这里已经设置好密码登录

    2.案例

    Maven pom文件依赖

    <!-- redis jar包 -->

    <dependency>

    <groupId>redis.clients</groupId>

    <artifactId>jedis</artifactId>

    <version>2.6.1</version>

    </dependency>

    工具类RedisUtil.java

    public class RedisUtil {
    
    	private static String host = "127.0.0.1"; // redis所在IP地址
    	private static int port = 6379; // 端口号
    	private static String password = "master"; // 访问密码
    
    	// 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    	private static int MAX_IDLE = 200;
    	// 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
    	private static int MAX_WAIT = 10000;
    	private static int TIMEOUT = 10000;
    	// 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    	private static boolean TEST_ON_BORROW = true;
    	private static JedisPool jedisPool = null;
    
    	/**
    	 * 初始化Jedis连接池
    	 */
    	static {
    		try {
    			JedisPoolConfig config = new JedisPoolConfig();
    			config.setMaxIdle(MAX_IDLE);
    			config.setMaxWaitMillis(MAX_WAIT);
    			config.setTestOnBorrow(TEST_ON_BORROW);
    			jedisPool = new JedisPool(config, host, port, TIMEOUT, password);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 获取Jedis实例
    	 */
    	public synchronized static Jedis getJedis() {
    		try {
    			if (jedisPool != null) {
    				Jedis resource = jedisPool.getResource();
    				System.out.println("redis连接成功.........");
    				return resource;
    			} else {
    				return null;
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
    
    	/**
    	 * 释放jedis资源
    	 */
    	public static void returnResource(final Jedis jedis) {
    		if (jedis != null) {
    			System.out.println("redis释放资源...........");
    			jedisPool.returnResource(jedis);
    		}
    	}
    
    	public static void main(String[] args) {
    		Jedis jedis = RedisUtil.getJedis();
    		System.out.println(jedis);
    		RedisUtil.returnResource(jedis);
    	}
    }

    Junit测试类 TestRedis.java

    public class TestRedis {
    
    	private Jedis jedis = null;
    
    	@Before
    	public void initRedis() {
    		jedis = RedisUtil.getJedis();
    	}
    
    	@After
    	public void clearRedis() {
    		RedisUtil.returnResource(jedis);
    	}
    
    	// redis操作字符串
    	@Test
    	public void testString() {
    		jedis.set("name", "aaron");
    		System.out.println("redis存储字符串:" + jedis.get("name"));
    
    		jedis.append("name", " is my name");// 拼接
    		System.out.println("redis拼接字符串:" + jedis.get("name"));
    
    		jedis.del("name"); // 删除某个键
    		System.out.println("redis删除字符串:" + jedis.get("name"));
    
    		// 设置多个键值对
    		jedis.mset("name", "tom", "age", "23", "tel", "18883455632");
    		jedis.incr("age");
    		System.out.println("设置多个键值对:" + jedis.get("name") + "-"
    				+ jedis.get("age") + "-" + jedis.get("tel"));
    	}
    
    	// redis操作Map
    	@Test
    	public void testMap() {
    		Map<String, String> map = new HashMap<String, String>();
    		map.put("name", "aaron");
    		map.put("age", "23");
    		map.put("email", "123@126.com");
    		jedis.hmset("user", map);
    		List<String> list = jedis.hmget("user", "name", "age", "email");
    		System.out.println("放到redis的map集合,打印出来的是list集合:" + list);
    		jedis.hdel("user", "age");// 删除map中的某个键值
    		System.out.println(jedis.hmget("user", "age")); // 因为删除了,所以返回的是null
    		System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数2
    		System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回true
    		System.out.println(jedis.hkeys("user"));// 返回map对象中的所有key
    		System.out.println(jedis.hvals("user"));// 返回map对象中的所有value
    
    		Iterator<String> iterator = jedis.hkeys("user").iterator();
    		while (iterator.hasNext()) {
    			String key = iterator.next();
    			System.out
    					.println("遍历结果集==" + key + ":" + jedis.hmget("user", key));
    		}
    	}
    
    	// jedis操作List
    	@Test
    	public void testList() {
    		jedis.del("java frameword");
    		System.out.println("移除后:" + jedis.lrange("java frameword", 0, -1));
    		// 先向key java framework中存放三条数据
    		jedis.lpush("java framework", "spring");
    		jedis.lpush("java framework", "struts");
    		jedis.lpush("java framework", "hibernate");
    
    		// 再取出所有数据jedis.lrange是按范围取出,
    		// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
    		System.out.println("取出key为java framework"
    				+ jedis.lrange("java framework", 0, -1));
    
    		jedis.del("java framework");
    		jedis.rpush("java framework", "spring");
    		jedis.rpush("java framework", "struts");
    		jedis.rpush("java framework", "hibernate");
    		System.out.println(jedis.lrange("java framework", 0, -1));
    	}
    
    	// jedis操作Set 
    	@Test
    	public void testSet() {
    		//添加数据
    		jedis.sadd("name", "tom");
    		jedis.sadd("name", "aaron");
    		jedis.sadd("name", "jack");
    		jedis.sadd("name", "jeny");
    		
    		System.out.println("redis中set集合=="+jedis.smembers("name"));
    		jedis.srem("name", "jeny");
    		System.out.println("移除jeny数据记录后获取所有加入的value=="+jedis.smembers("name"));// 
    		System.out.println("判断jeny是否是name集合中的元素=="+jedis.sismember("name", "jeny"));
    		System.out.println("随机获取redis中的key为name的数据=="+jedis.srandmember("name"));
    		System.out.println("返回集合的元素个数 =="+jedis.scard("name"));
    	}
    }
    
  • 相关阅读:
    Chapter 03Using SingleRow Functions to Customize Output(03)
    Chapter 03Using SingleRow Functions to Customize Output(01)
    Chapter 04Using Conversion Functions and Conditional ExpressionsNesting Functions
    Chapter 04Using Conversion Functions and Conditional ExpressionsGeneral Functions
    Chapter 11Creating Other Schema Objects Index
    传奇程序员John Carmack 访谈实录 (zz.is2120)
    保持简单纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
    王江民:传奇一生 (zz.is2120)
    2011台湾游日月潭
    2011台湾游星云大师的佛光寺
  • 原文地址:https://www.cnblogs.com/haaron/p/5329526.html
Copyright © 2011-2022 走看看