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"));
	}
}
时间: 2024-10-07 06:39:20

Reids笔记的相关文章

reids笔记(一)

redis安装 ubuntu:     apt-get install redis-server redis服务  :redis-server 启动客户端   :redis-cli redis简单知识初步: 0.redis 文档 :http://doc.redisfans.com/ 1.redis为单进程2.redis有16个库(0----15)默认使用0号数据库3. select 切换数据库 select 3 使用3号数据库4.BDSIZE 查看当前数据库的key的数量5.FLUSHDB 清空

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

【安全牛学习笔记】

弱点扫描 ╋━━━━━━━━━━━━━━━━━━━━╋ ┃发现弱点                                ┃ ┃发现漏洞                                ┃ ┃  基于端口五福扫描结果版本信息(速度慢)┃ ┃  搜索已公开的漏洞数据库(数量大)      ┃ ┃  使用弱点扫描器实现漏洞管理            ┃ ╋━━━━━━━━━━━━━━━━━━━━╋ [email protected]:~# searchsploit Usage:

51CTO持续更新《通哥的运维笔记》

<通哥的运维笔记>将持续在51CTO网站更新,希望大家多多关注.互相学习,后期,我将会退出<通哥的运维笔记>系列视频教程,希望带给大家最大的收获,帮助大家更好的学习.进步.<通哥的运维笔记>主要从linux系统管理.虚拟化.cloudstack云平台以及网络管理之CCNA.CCNP.CCIE,等等方面深入讲解.

WPF笔记整理 - Bitmap和BitmapImage

项目中有图片处理的逻辑,因此要用到Bitmap.而WPF加载的一般都是BitmapImage.这里就需要将BitmapImage转成Bitmap 1. 图片的路径要用这样的,假设图片在project下的Images目录,文件名XXImage.png. pack://application:,,,/xxx;component/Images/XXImage.png 2. 代码: Bitmap bmp = null; var image = new BitmapImage(new Uri(this.X

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

学习笔记之邮件发送篇

用脚本语言发送邮件是系统管理员必备技能 对系统定期检查或者当服务器受到攻击时生成文档和报表. 发布这些文档最快速有效的方法就是发送邮件. python中email模块使得处理邮件变得比较简单 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 本段摘录于    http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 1.smtplib模块 smtplib.SMTP([host[, p

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v