Redis基本操作

windows

下载

https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100

然后解压

Redis基本操作

打开服务

然后打开客服端

Redis基本操作

Linux

下载地址

https://download.redis.io/releases/redis-6.2.5.tar.gz

https://mirrors.huaweicloud.com/redis/镜像

然后传到服务器上

移动到opt目录下

mv redis-6.2.5.tar.gz /opt

解压安装包

tar -zxvf redis-6.2.5.tar.gz

解压完进去

安装

yum install gcc-c++

然后配置环境

make

make 确认一下 可有可无

make install

这就安装完毕了

默认安装路径

/usr/local/bin

然后在这个里面建一个文件夹把 redis.conf 复制过去

mkdir lybconfig

cp /opt/redis-6.2.5/redis.conf lybconfig/

修改一下redis.conf改成以后台方式启动

Redis基本操作

保存退出

开启服务

redis-server lybconfig/redis.conf 用哪个开启服务

Redis基本操作

开启客户端

redis-cli -p 6379

Redis基本操作

关闭服务

Redis基本操作

五大基本类型

Redis基本操作

看存在不

Redis基本操作

move name 1 删除

EXPIRE name 10 多久过期 expire

ttl name 离过期还有多久

127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> TYPE age

String

get name显示全部

127.0.0.1:6379> APPEND name love

List

lpush list one#放左边 left

lrange list 0 -1显示全部

放入值 --------------------------------------------------------------------------------------- 127.0.0.1:6379> lpush list one

set

集合

SADD sets aaa#添加

smembers k显示

127.0.0.1:6379> SADD sets aaa

hash

哈希 有名字有地方

一一对应

名字+地方 = 一个值

一个哈希可以有多个地方 一个地方一个值


zset

三种特殊类型

地理空间 Geospatial

底成是zset

127.0.0.1:6379> geoadd china 116.397128 39.916527 beijing 121.478423671875 31.22694067865231 shanghai (integer) 2

基数统计 Hyperloglog

有0.81%的错误

有点像集合 不重复

127.0.0.1:6379> PFADD one aaa b ccc d

Bitmaps

可以理解为 1做了 0没做

setbit sign 6 1


事务

单条是保证原子性

但是整个事务不保证原子性

127.0.0.1:6379> multi
  • 编译型异常事务中所有命令都不会执行 (代码有问题 ,命令有问题)
  • 运行时异常(1/0)错误的不执行,其他的照样执行

watch相当于加了个乐观锁

127.0.0.1:6379> WATCH k1

unwatch

刷新一个事务中已被监视的所有key。

如果执行

Jedis

先保证redis服务是开启的

创建一个maven项目

导包

 <dependencies>
 

创建一个类

里面的命令和redis里面的一样不过换成了方法

package com.hkd; ​ import redis.clients.jedis.Jedis; ​ public class TestPing {     public static void main(String[] args) {         Jedis jedis = new Jedis("127.0.0.1",6379);         System.out.println(jedis.ping()); ​     } } ​

里面的事务

package com.hkd; ​ import com.alibaba.fastjson.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction; ​

Spring-Boot整合redis

Spring-Boot 2.x以后默认使用的是Lettuce

使用jedis:Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接使用Lettuce:Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的,所以一个连接实例

 <dependency>
     <groupId>org.springframework.bootgroupId>
     <artifactId>spring-boot-starter-data-redisartifactId>
 dependency>

自定义RedisTemplate

就是为了不乱码

package com.hkd.config; ​ import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; ​ ​ import java.net.UnknownHostException; ​

Redis工具类

Redis持久化

因为redis不是一个数据库 他的数据是放在内存里面的(断电即失)

所有要把他存起来也就是持久化

然后有两种方法各有千秋

RDB机制(Redis DataBase) 默认

好处 存取效率高恢复快 坏处 丢的数据可能比较多(比aof多 )

你用redis写数据,数据是在内存里面的(断电即失)

然后RDB机制会再运行一个线程fork 满足一定条件会把数据保存到一个文件里面这样就可以保存数据了

但是万一还没有到下一次保存的时间突然断电了就会丢失一部分数据

就是用快照的方式保存下来

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。

就是把里面的数据保存到文件里面然后下次读的时候再读取文件

Redis基本操作

多少秒 改几次 的情况下保存一次

快照触发机制

  • 1.满足设置的触发条件
  • 2.使用了flushall命令
  • 3.关闭redis的时候(shutdown)

满足条件就保存下来

就算关机了也没时

Redis基本操作

数据恢复

Redis基本操作

因为数据存在dump.rdb

Redis基本操作

redis会读取这个文件把数据读进去

这个文件是在一个特定的位置下的 ,一般不用管 /usr/local/bin

AOF机制(Append Only File)

好处是数据丢失的少(最多丢一秒数据) 缺点是恢复数据慢 生成的文件大

将所有的命令都记下来 只记写入 不计读 读对数据不影响

有点像历史记录

然后恢复的时候全部重新执行一遍 肯定慢

默认关闭

Redis基本操作

要是开启这个设置需要重启redis

重启完

Redis基本操作

要是这个文件被破坏了就启动不了redis了

怎么修复

redis-check-aof –fix appendonly.aof

Redis基本操作

消息订阅

PSUBSCRIBE pattern [pattern …] #订阅一个或多个符合给定模式的频道;

PUBSUB subcommand [argument [argument …]] #查看订阅与发布系统状态;

PUBLISH channel message #将信息发送到指定的频道;

PUNSUBSCRIBE [pattern [pattern …]] #退订所有给定模式的频道;

UBSCRIBE channel [channel …] #订阅给定的一个或多个频道的信息;

UNSUBSCRIBE [channel [channel …]] #指退订给定的频道;

订阅端 127.0.0.1:6379> SUBSCRIBE lyb Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "lyb" 3) (integer) 1 1) "message" 2) "lyb" 3) "hello"    Ctrl-C 退出 发布端   发之后会收到 127.0.0.1:6379> PUBLISH lyb "hello" (integer) 1

UNSUBSCRIBE () 退订 某一个 要不然就是全退

主从复制

Original: https://www.cnblogs.com/bxl-lyb/p/15967473.html
Author: 木子一十甫寸
Title: Redis基本操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684833/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球