Reids笔记
Posted Aaron殇醉月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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", "[email protected]"); 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")); } }
以上是关于Reids笔记的主要内容,如果未能解决你的问题,请参考以下文章
Redis个人笔记:Redis应用场景,Redis常见命令,Reids缓存击穿穿透,Redis分布式锁实现方案,秒杀设计思路,Redis消息队列,Reids持久化,Redis主从哨兵分片集群