redis 删除set_【java笔记】Redis

Redis 简介:

Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

数据量大,需要频繁检索,传统的关系型数据库因为要对电脑磁盘进行频繁操作,会降低系统性能,更加耗费时间;但是可靠

redis是一个key-value形式存储的数据库,数据存储在内存中,c语言编写。

Redis 的特点:

1. 支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash 表)、set(集合)、 zset(排序 set)、hyperloglog(基数估算)

2. 支持持久化操作,可以进行 aof 及 rdb 数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。

3. 支持通过 Replication 进行数据复制,通过 master-slave 机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。

4. 单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

安装Redis单机版

① 要在 linux 系统中安装 gcc:yum install -y gcc-c++

② 需要将下载好的 redis 压缩包添加到 linux 服务器中 :redis-3.0.0.tar.gz (redis 的版本:副版本号奇数版本号是测试版,不建议在生产环境中使用。 偶数版本时稳定版建议在生产环境中使用。 3.0 版本更新比较大。集成了集群技术。)

③ 解压压缩包 :命令:tar -zxvf redis......

④ 编译 redis :命令:进入 redis 的解压完毕的根目录下 执行命令:make

⑤ 安装 redis :命令:进入redis的解压完毕的根目录下,执行命令:make install PREFIX=/usr/local/redis

⑥ 启动 redis,有前端启动和后端启动,通常使用后端启动更加方便;(参照后端启动的具体步骤)

前端启动 :在 bin 目录下执行命令: ./redis-server (ctrl+c)退出 redis

f2be43357c953efb7c9a5fa6f0334e90.png

后端启动

(1)先将 redis 解压目录下的 redis.conf 文件拷贝到 安装好的 redis 的 bin 目录下命令:cp redis.conf /usr/local/redis/bin

(2)修改拷贝过来的 redis.conf 配置文件 :命令:vim redis.conf ,将 daemonize no 改为 yes

(3)启动 redis :在 bin 目录下执行命令:./redis-server redis.conf

(4)查看 redis 启动是否成功 ,输入命令:ps aux|grep redis

42237ca578bf27c203d2d27d3873161f.png

(5) 关闭 redis 的命令 :./redis-cli shutdown

7a82b994b2129f0ac7f0c0bceb3eeb34.png

意为在redis-server 启动时去加载 redis.conf 配置文件;redis.conf 文件可以在任何位置,只要q在启动时 加上其所在位置的路径即可,在Redis文件bin目录下便不需要加上路径;

159055a614293197db3257ba9d4ba0b6.png

表示启动成功;

⑦ 测试 redis ,在 bin 目录下启动 redis 自带的客户端 ./redis-cli ,常见 redis 命令: 输入ping--->会相应pong;

Redis 数据类型 :

对比关系型数据库靠sql语言区操作数据库,内存型数据库则是靠自己的命令去操作数据;

常用的命令:

键值对类型的存储

String类型

Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的

长度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限

示例:

"kevin"incr 让当前键值以 1 的数量递增,并返回递增后的值

incrby 可以指定参数一次增加的数值,并返回递增后的值

decr 让当前键值以 1 的数量递减 并返回递减后的值

decrby 可以指定参数一次递减的数值,并返回递减后的值

incrbyfloat 可以递增一个双精度浮点数

append 作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。返回值是追加后字符串的总长度。

mget/mset 作用与 get/set 相似,不过 mget/mset 可以同时获得/设置多个键的键值 del 根据 key 来删除 value

flushdb 清除当前库的所有数据

ffe1e5117f49b6a9e2f7237f5778baef.png

e4da0eeff5b19b52068f18fd90a6b01b.png

hash类型:

08bba595fc811884a665b7966bea8333.png

hexists—— 判断 子key 是否存在的命令;

fb43aeb584fff52d58c9c73f488fd4ac.png

List(链表)

508ef96f9b62d40d080950f52cf21b53.png

要注意链表的顺序;(联想坐标轴)

Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的头部或尾部

示例:

redis 127.0.0.1:6379> lpush tutoriallist redis

(integer) 1

redis 127.0.0.1:6379> lpush tutoriallist mongodb

(integer) 2

redis 127.0.0.1:6379> lpush tutoriallist rabitmq

(integer) 3

redis 127.0.0.1:6379> lrange tutoriallist 0 10

1) "rabitmq"

2) "mongodb"

3) "redis

lpush key value 向链表左侧添加

rpush key value 向链表右侧添加lpop key 从左边移出一个元素

rpop key 从右边移出一个元素

llen key 返回链表中元素的个数 相当于关系型数据库中 select count(*)

lrange key start end lrange 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列 表起始索引为 0。

lrange 也支持负索引 lrange nn -2 -1 如 -1 表示最右边第一个元素 -2 表示最右边第二个元素,依次类推。

lindex key indexnumber 如果要将列表类型当做数组来用,lindex 命令是必不可少的。

lindex 命令用来返回指定索引的元素,索引从 0 开始

如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。

Lset key indexnumber value 是另一个通过索引操作列表的命令,它会将索引为 index的元素赋值为 value。

Set(集合)

set中的value是无序的;

在set集合当中一个keydz中的value值不允许有重复的,重复的添加不进去;

SortedSet(有序集合)zset:

27613b9321b86a90b8bba36c7aed2449.png

sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0

scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0

smembers key 返回 key 对应 set 的所有元素,结果是无序的

sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存在

srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存在或者 key 不存在返回 0

SortedSet(有序集合)zset :

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。

示例:

redis 127.0.0.1:6379> zadd tutoriallist 0 redis

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq

(integer) 1

redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq

(integer) 0

redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000

1) "redis"

2) "mongodb"

3) "rabitmq"

zadd key score value 将一个或多个 value 及其 socre 加入到 set 中

zrange key start end 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令相似)

zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数

zremrangebyscore key start end 可用于范围删除操作

Redis中的其他命令:

ping 测试 redis 是否链接 如果已链接返回 PONG

echo value 测试 redis 是否链接 如果已链接返回 echo 命令后给定的值

keys * 返回所有的 key 可以加*通配

exists key 判断 string 类型一个 key 是否存在 如果存在返回 1 否则返回 0

expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key 及 value

ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经被删除

persist 移除给定 key 的过期时间

select dbindex 选择数据库(0-15)

move key dbIndex 将当前数据库中的 key 转移到其他数据库中

dbsize 返回当前数据库中的 key 的数目

info 获取服务器的信息和统计

flushdb 删除当前选择的数据库中的 keyflushall 删除所有数据库中的所有 key

quit 退出连接

3fede02108373bf817ae0904bc72540e.png

Redis装完之后是有十六个库的,而且库和库之间是隔离的,没有指定库时默认启用的是下表为0的库,

Redis 的配置——redis.conf 文件

RDB

对内存中数据库状态进行快照

RDB 方式:将 Redis 在内存中的数据库状态保存到磁盘里面,RDB 文件是一个经过压缩的二进制文件,通过该文件可以还原生成 RDB 文件时的数据库状态(默认下,持久化到 dump.rdb 文件,并且在 redis 重启后,自动读取其中文件)

b30914b05e122f64cddd95122470bc68.png

RDB 的生成方式:

1)执行命令手动生成

有两个 Redis 命令可以用于生成 RDB 文件,一个是 SAVE,另一个是 BGSAVE SAVE 命令会阻塞 Redis 服务器进程,直到 RDB 文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求,BGSAVE 命令会派生出一个子进程,然后由子进程负责创建 RDB 文件,服务器进程(父进程)继续处理命令请求,创建 RDB 文件结束之前,客户端发送的 BGSAVE 和 SAVE 命令会被服务器拒绝

2)通过配置自动生成

可以设置服务器配置的 save 选项,让服务器每隔一段时间自动执行一次 BGSAVE 命令,可以通过 save 选项设置多个保存条件,但只要其中任意一个条件被满足,服务器就会执行 BGSAVE 命令 例如:

04a73ece9fae3015d428989a5236fa6c.png

那么只要满足以下三个条件中的任意一个,BGSAVE 命令就会被执行

服务器在 900 秒之内,对数据库进行了至少 1 次修改

服务器在 300 秒之内,对数据库进行了至少 10 次修改

服务器在 60 秒之内,对数据库进行了至少 10000 次修改

还可以根据实际情况去配置更多的触发条件;

./ 意为在哪个文件夹下(路径)启动了客户端,那么相应的备份文件就会在哪个文件夹(路径)下生成;当然也可以自己指定路径;

d60990aee0094b999aeb87cd385043e0.png

AOF 方式

AOF 持久化方式在 redis 中默认是关闭的,需要修改配置文件开启该方式。

AOF:把每条命令都写入文件,类似 mysql 的 binlog 日志

AOF 方式:是通过保存 Redis 服务器所执行的写命令来记录数据库状态的文件

AOF 文件刷新的方式,有三种:

①:appendfsync always - 每提交一个修改命令都调用 fsync 刷新到 AOF 文件,非常非常慢,但也非常安全 ;

②:appendfsync everysec - 每秒钟都调用 fsync 刷新到 AOF 文件,很快,但可能会丢失一秒以内的数据 ;

③:appendfsync no - 依靠 OS 进行刷新,redis 不主动刷新 AOF,这样最快,但安全性就差 ;

默认并推荐每秒刷新,这样在速度和安全上都做到了兼顾;

服务器在启动时,通过载入和执行 AOF 文件中保存的命令来还原服务器关闭之前的数据库状态;

AOF 数据恢复方式 :具体过程: 1、载入 AOF 文件 ,2、创建模拟客户端 ,3、从 AOF 文件中读取一条命令,使用模拟客户端执行命令 循环读取并执行命令,直到全部完成

如果同时启用了 RDB 和 AOF 方式,AOF 优先,启动时只加载 AOF 文件恢复数据

AOF备份方式所生成的备份文件默认会存放到redis的bin目录下;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值