1,redis 应用场景:
众多语言都支持Redis,因为Redis 交换数据块,在服务器中常用来储备一些需要频繁调用的数据,节省内存开销,也极大的提升了速度。
将一些热点数据存储到Redis中, 要用的时候,直接从内存中存取,极大的提高了速度和节省了服务器的开销。
1,会话缓存(最常用)
2,消息队列(支付)
3,活动排行榜或者计数
4, 发布,订阅消息(消息通知)
5,商品列表,评论列表;
2, 选择配置文件执行server
执行步骤:
1, 复制配置文件换一份;
2, 找到port,将port的值修改为6380
使用命令 redis-server conf-path 启动服务;
image.png
image.png
redis 数据类型以及基本操作:
Redis一共支持五种数据类型: String(字符串),hash,list(列表),set .zset
String(字符串):Redis最基本的数据类型,一个键对应一个值,一个键值最大存储512MB
Hash(哈希):hash是一个键值对的集合,是一个String类型的field和value的映射表,适合用于存储对象
List(列表):是redis的简单的字符串列表,按插入顺序排序
Set(集合):是String字符串类型的无序集合,也不可重复
ZSet(sorted set 有序集合)是String类型的有序集合,也不可重复。有序集合中的每个元素都需要指定一个分数,根据分数对元素进行升序排序。
image.png
jedis 连接:
package com.taotao.lizi.service;
import redis.clients.jedis.Jedis;
/**
* @author aping
* @time 2020/7/13 11:15
*/
public class Redis {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
//设置 redis 字符串数据
jedis.set("runoobkey", "www.runoob.com");
// 获取存储的数据并输出
System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
}
}
手写redis 客户端:
package com.taotao.lizi.service;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* @author aping
* @time 2020/7/13 11:52
*/
public class MyClient {
Socket socket;
InputStream reader;
OutputStream writer;
public MyClient() throws IOException{
socket=new Socket("127.0.0.1",6379);
reader=socket.getInputStream();
writer=socket.getOutputStream();
}
public String set(String key,String value) throws IOException {
StringBuffer command = new StringBuffer();
command.append("*3").append("\r\n");
command.append("$3").append("\r\n");
command.append("SET").append("\r\n");
command.append("$").append(key.getBytes().length).append("\r\n");
command.append(key).append("\r\n");
command.append("$").append(value.getBytes().length).append("\r\n");
command.append(value).append("\r\n");
writer.write(command.toString().getBytes());
byte[] response = new byte[1024];
reader.read(response);
return new String(response);
}
public String get(String key) throws IOException {
StringBuffer command = new StringBuffer();
command.append("*2").append("\r\n");
command.append("$3").append("\r\n");
command.append("GET").append("\r\n");
command.append("$").append(key.getBytes().length).append("\r\n");
command.append(key).append("\r\n");
writer.write(command.toString().getBytes());
byte[] response = new byte[1024];
reader.read(response);
return new String(response);
}
}
测试方法
@Test
public void MyClientTest() throws IOException{
MyClient client=new MyClient();
client.set("name","java");
String name=client.get("name");
System.out.println(name);
}
测试输出
$4
java
网友评论