Redis学习笔记

目录

一. redis前言

1.1 Redis简介

1.2 主要特点:

1.3redis 的windows安装后

1.4 修改Redis配置文件

二.redis常用数据类型

 三、redis常用命令

1、字符串操作命令

 2、哈希操作命令

 3、列表操作命令

 4、集合操作命令

5、有序集合操作命令

 6、redis通用命令

 四、再java中使用redis


一. redis前言

1.1 Redis简介

Redis是一个基于**内存**的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的**存储中间件**。

1.2 主要特点:

- 基于内存存储,读写性能高  
- 适合存储热点数据(热点商品、资讯、新闻)
- 企业应用广泛

1.3redis 的windows安装后

1.4 修改Redis配置文件

设置Redis服务密码,修改redis.windows.conf

打开配置文件修改
requirepass 123456

重启Redis后,再次连接Redis时,需加上密码,否则连接失败。

 h 标识你要在哪里链接 , -p 端口号 -a 密码
redis-cli.exe -h localhost -p 6379 -a 123456

二.redis常用数据类型

 三、redis常用命令

1、字符串操作命令

 2、哈希操作命令

 3、列表操作命令

 4、集合操作命令

5、有序集合操作命令

 

 6、redis通用命令

 四、再java中使用redis

 3.配置类


@Configuration
@Slf4j
public class RedisConfiguration {  //redis的配置类

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis的模板对象... ");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的链接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key 的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }

}

4。测试方法

@SpringBootTest
public class RedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedis(){
        System.out.println(redisTemplate);
        //string数据操作
        ValueOperations valueOperations = redisTemplate.opsForValue();
        //hash类型的数据操作
        HashOperations hashOperations = redisTemplate.opsForHash();
        //list类型的数据操作
        ListOperations listOperations = redisTemplate.opsForList();
        //set类型数据操作
        SetOperations setOperations = redisTemplate.opsForSet();
        //zset类型数据操作
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }

}

测试再java当中操作redis

   **1). 操作字符串类型数据** ,其他的操作命令也类似,就是使用的对象不同,命令和我们再客户端使用的命令一样



```java
	/**
     * 操作字符串类型的数据
     */
    @Test
    public void testString(){
        // set get setex setnx
        redisTemplate.opsForValue().set("name","小明");
        String city = (String) redisTemplate.opsForValue().get("name");
        System.out.println(city);
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
        redisTemplate.opsForValue().setIfAbsent("lock","1");
        redisTemplate.opsForValue().setIfAbsent("lock","2");
    }
```

五、HttpClient

 1、get请求

    /**
     * 测试通过httpclient发送GET方式的请求
     */
    @Test
    public void testGet() throws IOException {
        //创建httpClientTest
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建请求对象
        HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
        //发送请求
        CloseableHttpResponse response = httpClient.execute(httpGet);

        //获取响应状态码
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println("请求状态码:"+ statusCode);
        //获取返回的数据
        HttpEntity entity = response.getEntity();
        String body = EntityUtils.toString(entity);
        System.out.println("服务端返回的数据为:" + body);

        //关闭资源
        response.close();
        httpClient.close();

    }

2、post请求

    /**
     * 测试通过httpclient发送GET方式的请求
     */
    @Test
    public void testPost() throws Exception{
        //获取HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建请求对象
        HttpPost httpPost =new  HttpPost("http://localhost:8080/admin/employee/login");

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("username","admin");
        jsonObject.put("password","123456");

        StringEntity entity = new StringEntity(jsonObject.toString());
        //指定请求编码方式
        entity.setContentEncoding("utf-8");
        //数据格式
        entity.setContentType("application/json");
        httpPost.setEntity(entity);

        //发送请求
        CloseableHttpResponse response = httpClient.execute(httpPost);

        //解析返回结果
        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println("响应码为:" + statusCode);

        HttpEntity entity1 = response.getEntity();
        String body = EntityUtils.toString(entity1);
        System.out.println("响应数据为:" + body);

        //关闭资源
        response.close();
        httpClient.close();

    }

六、微信小程序开发


**步骤分析:**

1. 小程序端,调用wx.login()获取code,就是授权码。
2. 小程序端,调用wx.request()发送请求并携带code,请求开发者服务器(自己编写的后端服务)。
3. 开发者服务端,通过HttpClient向微信接口服务发送请求,并携带appId+appsecret+code三个参数。
4. 开发者服务端,接收微信接口服务返回的数据,session_key+opendId等。opendId是微信用户的唯一标识。
5. 开发者服务端,自定义登录态,生成令牌(token)和openid等数据返回给小程序端,方便后绪请求身份校验。
6. 小程序端,收到自定义登录态,存储storage。
7. 小程序端,后绪通过wx.request()发起业务请求时,携带token。
8. 开发者服务端,收到请求后,通过携带的token,解析当前登录用户的id。
9. 开发者服务端,身份校验通过后,继续相关的业务逻辑处理,最终返回业务数据。

七、spring-task

1、Spring Task** 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。

2、spring task_cron表达式

*cron表达式**其实就是一个字符串,通过cron表达式可以**定义任务触发的时间**

秒、分钟、小时、日、月、周、年(可选)

例子::2022年10月12日上午9点整 对应的cron表达式为:**0 0 9 12 10 ? 2022**

八、 WebSocket

WebSocket 是基于 TCP 的一种新的**网络协议**。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,
两者之间就可以创建**持久性**的连接, 并进行**双向**数据传输。

项目依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

WebSocket服务

package com.sky.WebSocket;

import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * WebSocket服务
 */
@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {

    //存放会话对象
    private static Map<String, Session> sessionMap = new HashMap();

    /**
     * 连接建立成功调用的方法
     */
    @OnOpen
    public void onOpen(Session session, @PathParam("sid") String sid) {
        System.out.println("客户端:" + sid + "建立连接");
        sessionMap.put(sid, session);
    }

    /**
     * 收到客户端消息后调用的方法
     *
     * @param message 客户端发送过来的消息
     */
    @OnMessage
    public void onMessage(String message, @PathParam("sid") String sid) {
        System.out.println("收到来自客户端:" + sid + "的信息:" + message);
    }

    /**
     * 连接关闭调用的方法
     *
     * @param sid
     */
    @OnClose
    public void onClose(@PathParam("sid") String sid) {
        System.out.println("连接断开:" + sid);
        sessionMap.remove(sid);
    }

    /**
     * 群发
     *
     * @param message
     */
    public void sendToAllClient(String message) {
        Collection<Session> sessions = sessionMap.values();
        for (Session session : sessions) {
            try {
                //服务器向客户端发送消息
                session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

 使用这个还需要配置(websocket配置类)

package com.sky.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * WebSocket配置类,用于注册WebSocket的Bean
 */
@Configuration
public class WebSocketConfiguration {

    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

}

加不加香菜!
关注 关注
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
redis学习笔记
05-04
### Redis 学习笔记知识点概览 #### 一、Redis 简介及特性 - **Redis**(Remote Dictionary Server)是一种开源的、基于内存的数据结构存储系统,它支持多种数据结构,如字符串(strings)、散列(hashes)、列表...
redis 学习笔记
weixin_47291060的博客
05-11 1781
redis 6 学习笔记
尚硅谷 Redis 学习笔记
weixin_56042518的博客
01-14 1239
RDB 持久化 能够在指定时间间隔对数据进行快照存储AOF 持久化 记录每次服务器的写操作,当服务器重启时会重新执行 AOF 文件中的写命令来恢复原始数据AOF 命令 以 Redis 协议追加保存每次写操作到文件末尾Redis 还能对 AOF 文件进行后台重写,使得 AOF 文件的体积不至于过大如果你希望你的数据在服务器运行的时候存在,也可以不使用任何持久化方式 — 只做缓存同时开启两种持久化方式。
黑马Redis学习笔记
qq_65578092的博客
07-21 1407
非关系型数据库关系型数据库将数据存储在表中,这些表之间可能存在,比如外键关系,并且可以通过sql语句操作这些关系。没有表的概念,数据往往以键值对的形式存储,并且数据和数据之间没有关系,即没有外键这种概念,并且操作数据库不能使用sql,只能使用自己的相关命令。Nosql数据库不是取代关系型数据库,而是对关系型数据库的补充。
Redis 学习笔记
杨群的博客
09-03 771
Redis 是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。
redis学习笔记(六)
小柒的博客
09-20 714
redis学习笔记(六)
Redis学习笔记(超详细,看完必会)
qq_44860722的博客
07-15 2617
当系统的并发量比较高的时候,请求会直接落在Mysql上,在中间插入了缓存Redis,所有的请求先到Redis中查,如果查到了直接返回,请求就不会落在Mysql上,减轻了Mysql的压力。一个恶意的请求,假如有3000万个请求,要查询数据id=-1的,Redis缓存中查不到数据,然后去Mysql中查,Mysql中也查不到,那么3000万个请求全落在Mysql,永远起不来服务(恶意请求,永远查不到数据)。在Redis中查不到,就去查Mysql,查Mysql结果为空,也将他添加到Redis缓存中,添加空值。...
Redis学习笔记.pdf
08-07
Redis还支持主从复制和哨兵机制(Sentinel),前者可以实现数据的同步备份,后者则用于管理多个Redis服务器,实现故障转移。Redis集群的建立和管理可以进一步提升数据库的高可用性和扩展性,支持数据分片和负载均衡...
redis学习笔记Redis.md
01-04
### Redis 学习笔记知识点概览 #### 一、Redis 概述与应用场景 ##### 1.1 NoSQL 数据库简介 - **定义**: NoSQL(Not Only SQL)泛指非关系型数据库,它们通常不使用传统的表格关系来存储数据。 - **特性**: NoSQL ...
Redis】Zset类型常用命令
m0_74105656的博客
10-16 1119
Redis中zset有序集合常用命令总结
Redisson使用全解
猪猪
10-15 429
redisson使用全解——redisson官方文档+注释(上篇)_redisson官网中文-CSDN博客redisson使用全解——redisson官方文档+注释(中篇)-CSDN博客redisson使用全解——redisson官方文档+注释(下篇)_redisson官网中文-CSDN博客
redis】Supervisord守护Redis进程后无法调整maxclients问题的解决
shen12138的博客
10-17 481
在服务器上运行Redis时,默认的最大连接数通常设置为10000。然而,在生产环境中,频频出现资源池打满现象,和开发沟通后认为不可能打满10000,所以开始排查吧。在高并发场景下,调整Redis的maxclients和系统的文件描述符限制至关重要。通过修改系统设置、Redis配置文件以及守护进程的相关配置,可以确保Redis能够处理更多的连接,避免因连接池打满导致的服务中断问题。
滚雪球学Redis[9.2讲]:Redis的最佳实践:高效应用与常见反模式规避指南
**My Coding Family**
10-18 1219
在上一节【9.1 Redis的常见问题排查】中,我们详细探讨了Redis在实际应用中的常见问题排查方法,包括处理错误信息、性能瓶颈识别以及数据一致性保障。这些技巧为我们在使用Redis的过程中提供了有效的故障应对策略。然而,单靠排查问题并不足够,遵循最佳实践才能真正确保Redis系统的高效性与稳定性。本节【9.2 Redis的最佳实践】将聚焦于如何在实际应用中使用Redis的通用原则、业务场景中的最佳实践,以及如何避免一些常见的反模式。
redisTemplate 配置和简单应用
weixin_66568937的博客
10-16 796
2.应用1.常用方法2.String类型3.Hash类型4.List类型5.Set类型6.zSet类型Redis常用的数据类型:String、Hash、List、Set、zSet1.RedisTemplate常用方法//判断是否有key所对应的值,有则返回true,没有则返回false//有则取出key值所对应的值//删除单个key值//其中keys:Collection keys//将当前传入的key值序列化为byte[]类型。
通过应用监控redis主从切换确保数据一致性
最新发布
dream_xin2013的专栏
10-19 614
通过应用监控redis主从切换确保数据一致性
redis过期提醒
Lxn2zh的博客
10-16 1138
有一次看redis的配置文件发现一个notify-keyspace-events配置,注释里边长篇大论的,那我得看看这是干啥的,看完注释内容,发现不得了了,redis竟然还有过期提醒的功能。g 一般性的,非特定类型的命令,比如del,expire,rename等。e 驱逐事件,当某个键因 maxmemore 策略而被删除时,产生该事件。首先呢,这个功能是基于发布订阅的,通过key的事件来触发发布订阅。x 过期事件,当某个键过期并删除时会产生该事件。s Set命令。
尚硅谷redis学习笔记
09-08
尚硅谷是一个教育机构,他们提供了一份关于Redis学习笔记。根据提供的引用内容,我们可以了解到他们提到了一些关于Redis配置和使用的内容。 首先,在引用中提到了通过执行命令"vi /redis-6.2.6/redis.conf"来编辑Redis配置文件。这个命令可以让你进入只读模式来查询"daemonize"配置项的位置。 在引用中提到了Redis会根据键值计算出应该送往的插槽,并且如果不是该客户端对应服务器的插槽,Redis会报错并告知应该前往的Redis实例的地址和端口。 在引用中提到了通过修改Redis的配置文件来指定Redis的日志文件位置。可以使用命令"sudo vim /etc/redis.conf"来编辑Redis的配置文件,并且在文件中指定日志文件的位置。 通过这些引用内容,我们可以得出结论,尚硅谷的Redis学习笔记涵盖了关于Redis的配置和使用的内容,并提供了一些相关的命令和操作示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis学习笔记--尚硅谷](https://blog.csdn.net/HHCS231/article/details/123637379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis学习笔记——尚硅谷](https://blog.csdn.net/qq_48092631/article/details/129662119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
写文章

热门文章

  • springboot学习笔记 2303
  • springMVC笔记 2055
  • jQuery学习笔记 1314
  • redis学习笔记(点评项目) 924
  • Redis学习笔记 296

最新评论

  • jQuery学习笔记

    CSDN-Ada助手: 恭喜你写了第8篇博客!学习jQuery确实是一件不容易的事情,但你已经做得非常好了。我建议你可以考虑写一些实际应用的案例,或者分享一些解决实际问题的经验,这样可以让读者更加深入地理解jQuery的使用。希望你能继续保持创作的热情,加油!

  • heima头条学习笔记

    CSDN-Ada助手: 恭喜您写下了第7篇博客,标题为“heima头条学习笔记”!您的持续创作真是令人赞叹。通过您的学习笔记,我们得以深入了解heima头条的知识,受益匪浅。不过,我谦虚地提出一些建议:在下一篇博客中,您可以考虑分享一些关于heima头条的实践经验或者探索其中的一些挑战与解决方案。这样的创作将进一步丰富我们对于该主题的了解。期待您的下一篇博客!

  • springcloud学习笔记

    CSDN-Ada助手: 恭喜您撰写了第6篇博客!标题为“springcloud学习笔记”,我很高兴看到您对这个主题的深入研究。您的博客内容一定为读者提供了很多有价值的学习笔记。接下来,我建议您继续在这个主题上深入探索,可以尝试分享一些实践经验或者案例分析,这将进一步丰富读者的知识。谦虚的语气能够让读者更加喜欢并尊重您的观点,期待您的下一篇创作!

  • spring笔记

    CSDN-Ada助手: 非常感谢您分享关于Spring的博客!您的文章标题“spring笔记”非常吸引人,摘要中的内容也很有用。鼓励您继续创作,分享更多关于Spring的知识。 除了您提到的配置仓库和获取Spring容器中的bean对象的技巧,还有一些与Spring相关的扩展知识和技能。例如,您可以深入研究Spring的注解配置,如@Autowired和@Component等,来更方便地管理和使用bean对象。另外,了解如何使用Spring的AOP(面向切面编程)来实现横切关注点的功能,可以提高代码的可维护性和复用性。此外,掌握使用Spring Boot来简化项目的配置和启动过程也是很有价值的技能。 希望这些扩展知识和技能对您的博客创作有所帮助!再次感谢您的分享,期待您的下一篇博客! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2

  • Redis学习笔记

    CSDN-Ada助手: 恭喜您完成了第5篇博客《Redis学习笔记》!持续创作博客是一项了不起的成就,能够分享自己的学习心得真是令人钦佩。通过您的博客,我深入了解了Redis的学习内容,受益匪浅。 在下一步的创作中,我建议您可以进一步探索Redis的高级应用和实际案例。对于读者来说,了解如何在实际项目中应用Redis将会非常有帮助。当然,这只是我谦虚的建议,您对于自己的创作方向肯定有更好的想法。期待您继续分享更多精彩的博客,不断提升自己的技术水平!

最新文章

  • redis学习笔记(点评项目)
  • jQuery学习笔记
  • heima头条学习笔记
2024年2篇
2023年7篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家厦门手糊法玻璃钢雕塑定制江苏户外玻璃钢雕塑供应商广安成都商场美陈公司商场开学季美陈玻璃钢草帽雕塑青海玻璃钢果蔬雕塑云浮仿铜玻璃钢雕塑大塘古代玻璃钢人物雕塑精工打造仙桃玻璃钢雕塑摆件批发枣庄玻璃钢卡通雕塑规格连江玻璃钢雕塑公司泉州手糊法玻璃钢雕塑厂家九江个性化玻璃钢雕塑哪家便宜文山玻璃钢雕塑定做玻璃钢卡通大象雕塑丰县玻璃钢花盆制作玻璃钢花盆怎么制作甘肃玻璃钢草莓雕塑价格玻璃钢花盆 番禺福建水果玻璃钢雕塑供应商梅州玻璃钢彩绘雕塑东莞玻璃钢彩绘雕塑玻璃钢仿铜雕塑人物价格武汉昆明市玻璃钢花盆普陀区拉丝玻璃钢雕塑哪家好舟山人物玻璃钢雕塑市场景观小品玻璃钢龙雕塑广西商场雕塑玻璃钢玻璃钢校园雕塑设计方案方圳玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化