美文网首页
18 redis 总结

18 redis 总结

作者: 滔滔逐浪 | 来源:发表于2020-07-13 15:38 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:18 redis 总结

          本文链接:https://www.haomeiwen.com/subject/rssncktx.html