Redis相关知识点
先前写过一篇使用spring boot连接redis的文章(Spring-Boot中Redis使用),现在又要使用nodejs连接redis,所以干脆把redis知识点单独列出来吧。Redis作为一门专门的技术来说,其实还是在面试的时候有很多问题可以问的。
【1】.Nodejs学习笔记(九)— 与Redis的交互(mranney/node_redis)入门
【2】.NodeRedis/node_redis
【3】.在 Node.js 应用中集成 Redis
【4】.redis - Node.js Redis客户端模块
【5】.Redis进阶 - 数据结构:底层数据结构详解
1.linux安装Redis
1 | ## 安装,安装之后就自动启动了 |
【1】.ubuntu 16.04安装redis的两种方式(apt和编译方式)和卸载 (这个简单)
【2】.Linux安装Redis (未尝试过)
【3】.centos7安装redis
【4】.centos下通过yum安装redis
【5】.设置远程Redis服务可以被访问 远程访问redis
2.nodejs redis设置过期时间
1 | const redis = require("redis"); |
3.设置过期时间
主要涉及两个方法:
1 |
|
1 | ## 设置指定key 多少秒后过期, seconds 为 -1 时表示永不过期 |
4.列出所有的key
1 | redis-cli keys '*' |
5.windows安装Redis
下载redis压缩包,解压就可以直接用,打开解压目录中的redis-server.exe就是启动了redis服务。winsows下官网没有提供,直接下载免安装版,解压之后,双击运行redis-server.exe启动运行服务端就可以了,redis-cli.exe是客户端。
安装为服务
1 | .\redis-server.exe --service-install redis.windows.conf |
在计算机管理->服务里面,设置启动,并设置开机启动。
注意
最新的版本可以到tporadowski /redis 下载,下载下来msi,直接安装就可以了。
【1】.windows下安装和配置Redis
【2】.Windows下安装Redis并设置开机自动启动 (安装为window服务,并设置开机启动)
【3】. tporadowski /redis 这里的版本好像还在更新,上面的版本已经是2016年的了,现在都是2022年了,好几年不更新了。
6.删除数据
1 | ## 删除单个 |
使用:eval “redis.call(‘del’, unpack(redis.call(‘keys’,’*’)))” 0 命令,会报错:
【1】.redis清空数据
【2】.redis删除单个key和多个key
【3】.通过redis-cli批量删除多个指定模式的key
【4】.redis批量删除key (windows适用) (这是一种windows和linux适用的方法,实测:eval “redis.call(‘del’, unpack(redis.call(‘keys’,’*’)))” 0,好像不行)
【5】.Redis根据通配符批量删除Key
7.存取map、set等操作
问题
(1) class java.lang.Double cannot be cast to class java.lang.String (java.lang.Double and java.lang.String are in module java.base of loader ‘bootstrap’)
根据查询资料已经相关例子,我发现了,如果使用 opsForHash.putAll存储一个Map类型的对象到redis,那么必须是Map<String,String>类型,而不能是例如Map<String,Double>这种类型。
1 | public boolean set(String key, Map value){ |
【1】.Java : java.lang.Double cannot be cast to java.lang.String
【2】.redis hash只能存储string类型?解决:redisTemplate 存储序列化对象
【3】.Redis学习《2.RedisTemplate五种数据类型基本API操作》
【4】.Redis学习《2.RedisTemplate五种数据类型基本API操作》
【5】.RedisTemplate最全的常用方法总结
【6】.Spring中使用RedisTemplate操作Redis(spring-data-redis)
(2) Unexpected token (START_OBJECT), expected START_ARRAY: need Array value to contain As.WRAPPER_ARRAY type information for class java.lang.Object
这个问题其实很奇怪,就是不同的Redis配置导致的,大家都用了一个redistemplate的东西,但是又不太一样,真是挺麻烦的。
【解决方案】
其实不算是解决方案,只是因为换了不同的 key 才解决的问题。
