当前位置:首页 > Java技术 > 001.windows Redis 3.0入门学习(转载加整合)

001.windows Redis 3.0入门学习(转载加整合)

一、Redis安装教程(转载)

Windows下安装Redis服务

说明:本文拷贝自https://jingyan.baidu.com/article/0f5fb099045b056d8334ea97.html

Redis是有名的NoSql数据库,一般Linux都会默认支持。但在Windows环境中,可能需要手动安装设置才能有效使用。这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你。

1、要安装Redis,首先要获取安装包。Windows的Redis安装包需要到以下GitHub链接找到。链接:https://github.com/MSOpenTech/redis。打开网站后,找到Release,点击前往下载页面。

 001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

2、在下载网页中,找到最后发行的版本(此处是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,点击下载。这里说明一下,第一个是msi微软格式的安装包,第二个是压缩包。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

3、双击刚下载好的msi格式的安装包(Redis-x64-3.2.100.msi)开始安装。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

4、选择“同意协议”,点击下一步继续。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

5、选择“添加Redis目录到环境变量PATH中”,这样方便系统自动识别Redis执行文件在哪里。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

6、端口号可保持默认的6379,并选择防火墙例外,从而保证外部可以正常访问Redis服务。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

7、设定最大值为100M。作为实验和学习,100M足够了。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

8、点击安装后,正式的安装过程开始。稍等一会即可完成。

9、安装完毕后,需要先做一些设定工作,以便服务启动后能正常运行。使用文本编辑器,这里使用Notepad++,打开Redis服务配置文件。注意:不要找错了,通常为redis.windows-service.conf,而不是redis.windows.conf。后者是以非系统服务方式启动程序使用的配置文件。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

10、找到含有requirepass字样的地方,追加一行,输入requirepass 12345。这是访问Redis时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码。此处以简单的12345来演示。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

11、点击“开始”>右击“计算机”>选择“管理”。在左侧栏中依次找到并点击“计算机管理(本地)”>服务和应用程序>服务。再在右侧找到Redis名称的服务,查看启动情况。如未启动,则手动启动之。正常情况下,服务应该正常启动并运行了。

001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记

12、最后来测试一下Redis是否正常提供服务。进入Redis的目录,cd C:\Program Files\Redis。输入redis-cli并回车。(redis-cli是客户端程序)如图正常提示进入,并显示正确端口号,则表示服务已经启动。

  001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记
13、使用服务前需要先通过密码验证。输入“auth 12345”并回车(12345是之前设定的密码)。返回提示OK表示验证通过。
001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记
14、实际测试一下读写。输入set mykey1 "I love you all!”并回车,用来保存一个键值。再输入get mykey1,获取刚才保存的键值。
001.windows Redis 3.0入门学习(转载加整合) _ JavaClub全栈架构师技术笔记
15、注意事项
  • 1.Windows使用的这个Redis是64位版本的,32位操作系统的同学就不要折腾了。
  • 2. 作为服务运行的Redis配置文件,通常为redis.windows-service.conf,而不是redis.windows.conf。小心不要选错了。

二、测试类以及jar包

    jar包:slf4j-api-1.7.7.jar、jedis-3.0.1.jar、commons-pool2-2.3.jar、junit-4.7.jar

     1. Redis连接池 

package com.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public final class RedisUtil {

//Redis服务器IP
private static String ADDR = "127.0.0.1";

//Redis的端口号
private static int PORT = 6379;

//访问密码
private static String AUTH = "12345";

//可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
private static int MAX_ACTIVE = 1024;

//控制一个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;

/**
* 初始化Redis连接池
*/
static {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(MAX_ACTIVE);//config.setMaxActive(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWaitMillis(MAX_WAIT);//config.setMaxWait(MAX_WAIT);
config.setTestOnBorrow(TEST_ON_BORROW);
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 获取Jedis实例
* @return
*/
public synchronized static Jedis getJedis() {
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
return resource;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

/**
* 释放jedis资源
* @param jedis
*/
public static void close(final Jedis jedis) {
if (jedis != null) {
jedisPool.close();
}
}
}

 2. Redis测试类

package com.redis;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;

public class RedisOperate {
private Jedis jedis;

@Before
public void setup() {
//连接redis服务器,192.168.0.100:6379
jedis = new Jedis("127.0.0.1", 6379);
//权限认证
jedis.auth("12345");
}

/**
* redis存储字符串
*/
@Test
public void testString() {
//-----添加数据----------
jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin
System.out.println(jedis.get("name"));//执行结果:xinxin

jedis.append("name", " is my lover"); //拼接
System.out.println(jedis.get("name"));

jedis.del("name"); //删除某个键
System.out.println(jedis.get("name"));
//设置多个键值对
jedis.mset("name","liuling","age","23","qq","476777XXX");
jedis.incr("age"); //进行加1操作
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));

}

/**
* redis操作Map
*/
@Test
public void testMap() {
//-----添加数据----------
Map<String, String> map = new HashMap<String, String>();
map.put("name", "xinxin");
map.put("age", "22");
map.put("qq", "123456");
jedis.hmset("user",map);
//取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
//第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
System.out.println(rsmap);

//删除map中的某个键值
jedis.hdel("user","age");
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> iter=jedis.hkeys("user").iterator();
while (iter.hasNext()){
String key = iter.next();
System.out.println(key+":"+jedis.hmget("user",key));
}
}

/**
* jedis操作List
*/
@Test
public void testList(){
//开始前,先移除所有的内容
jedis.del("java framework");
System.out.println(jedis.lrange("java framework",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(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("users","liuling");
jedis.sadd("users","xinxin");
jedis.sadd("users","ling");
jedis.sadd("users","zhangxinxin");
jedis.sadd("users","who");
//移除noname
jedis.srem("users","who");
System.out.println(jedis.smembers("users"));//获取所有加入的value
System.out.println(jedis.sismember("users", "who"));//判断 who 是否是user集合的元素
System.out.println(jedis.srandmember("users"));
System.out.println(jedis.scard("users"));//返回集合的元素个数
}

@Test
public void test() throws InterruptedException {
//jedis 排序
//注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
jedis.del("a");//先清除数据,再加入数据进行测试
jedis.rpush("a", "1");
jedis.lpush("a","6");
jedis.lpush("a","3");
jedis.lpush("a","9");
System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
System.out.println(jedis.sort("a")); //[1, 3, 6, 9] //输入排序后结果
System.out.println(jedis.lrange("a",0,-1));
}

@Test
public void testRedisPool() {
RedisUtil.getJedis().set("newname", "中文测试");
System.out.println(RedisUtil.getJedis().get("newname"));
}
}

三、常用控制台指令

 

redis 常用命令行指令汇总

 版权声明:原创博文,转载请注明出处~ https://blog.csdn.net/She_lock/article/details/80621156

Redis 配置

Redis 配置放在文件名为 redis.conf 的文件中。 
1、获取配置信息 
语法:

CONFIG GET CONFIG_SETTING_NAME

样例:

192.168.56.101:0>CONFIG GET port
1) por

2、 编辑配置 
语法:

CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

 

样例:

192.168.56.101:0>select 6  //选择数据库,选不选择不影响下面设置操作
OK

192.168.56.101:6>CONFIG GET timeout
1) timeout
2) 0
192.168.56.101:6>CONFIG SET timeout 5000
OK

192.168.56.101:6>CONFIG GET timeout
1) timeout
2) 5000

 

数据操作

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 
1、String(字符串) 
一个key对应一个value。一个键最大能存储512MB。string类型是二进制安全的。

192.168.56.101:6>SET name "hello"   //存值
OK

192.168.56.101:6>GET name       //取值
h

2、Hash(哈希) 
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。每个 hash 可以存储 232192.168.56.101:6>HMSET user name "张三" age 18 //存多个值 HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN 存单个值用 HSET KEY_NAME FIELD VALUE 

OK

192.168.56.101:6>HGET user age  //取值  HGET KEY_NAME FIELD_NAME 
18

192.168.56.101:6>HGET user name
张三

192.168.56.101:6>HGETALL user   //所有的字段和值  HGETALL KEY_NAME 
1) name
2) 张三
3) age
4) 18
5) sex
6) 男

192.168.56.101:6>HKEYS user  //获取key  HKEYS key 
1) name
2) age
3) sex

192.168.56.101:6>H

192.168.56.101:6>exists tecp
0

192.168

2、DEL KEY_NAME 删除key。被删除 key 的数量。

192.168.56.10

3、Expire KEY_NAME TIME_IN_SECONDS 设置 key 的过期时间,单位为 s(秒)。key 过期后将不再可用。设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

192.168.56.101:6>set name zhangsan 
OK

192.168.56.101:

4、 TTL KEY_NAME 以秒为单位返回 key 的剩余过期时间。

192.168.56.101:6>set name zhangsan 
OK

192.168.56.101:6>expire name 60
1

192.168.56.101:6>ttl name    //已经过了6s
54

转载于:https://www.cnblogs.com/redlittleface/p/10511857.html

作者:weixin_30773135
来源链接:https://blog.csdn.net/weixin_30773135/article/details/97923338

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/67930.html

分享给朋友: