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"));
}
}