Redis快速入门

1、什么是Redis

  • 远程字典服务器:一个开源的基于内存的数据库,常用作键值存储,缓存和消息队列等

  • Redis通常将全部数据存储在内存中,也可以不时的将数据写入硬盘实现持久化,但仅用于重新启动后将数据加载回内存(内存的速度比硬盘快一个数量级)

  • 基于key-value 键值对的非关系型数据库

  • 基于内存的kv键值对内存数据库(NoSQL一种),mysql是关系数据库

  • redis在某一些场景使用中要明显优于mysql

  • redis通常用于一些特定场景,需要与MySQL一起配合使用

  • 相互依存,相互互补

优点:

  • 性能极高

  • 数据类型丰富,单键值对最大支持512M大小的数据

  • 简单易用,支持所有主流编程语言

  • 支持数据持久化,主从复制,哨兵模式等高等可用特性

2、安装Redis

在 windows 上安装 Redis

Linux 安装 Redis

在 ubuntu 上安装 Redis我的是这一种

  • 控制面板--卸载程序中

  • 在电脑商城中下载---Ubuntu 22.04.3 LTS,下载好点击打开,等几分钟

  • 打开命令行:管理员运行

    • 输入ubuntu---回车

    • 在输入sudo apt update---回车

    • 在输入sudo apt install redis-server---回车

    • 在输入sudo service redis-server start---回车

    • 在输入redis-cli---回车:(第二天学习,可以输入这个命名,进去redis客户端)

    • 在输入ping回车返回给你PONG安装完成---回车

  • 启动Redis

    • sudo service redis-server start

总结:当你第二天打开redis时,会发现一个异常:could not connect to redis at 127.0.0.1:6379: connection refused

我们只需要启动一下服务器进行了,不需要在网络上看着都是重装,打开你win11电脑上的Ubuntu,然后输入redis-service命令就启动了你的redis服务器就可以了,然后关闭窗口

3、基本操作

  • redis默认有16个数据库,编号为0~15,且默认访问0号数据库

       
    select 数据库编号 选择指定的数据库
    dbsize 获取当前数据库键值对数量
    flushdb 清空当前数据库
    flushall 清空所有数据库

       
    save 将数据报错至磁盘
    bgsave 将数据异步保存至磁盘(后台:Background)
    lastsave 获取最后一次成功保存的unix时间
  • 通用数据操作(操作范围为当前数据库)

       
    keys 格式 查看符合指定格式的key,*为通配符
    exists key1[key2 ...] 查看是否存在一个至多个指定的key
    type key 按key查看value的数据类型
    del key1[key2 ...] 按key删除一至多个键值对
       
    rename 重命名key1,如果key2已经存在,其值会被覆盖
    renamenx key1 key2 key2不存在时重命名key1
       
    move key 数据库编号 按key将一个键值对移动到指定数据库
    copy key1 key2 将key1的值拷贝给key2

4、字符串

   
set key value 添加/修改一个键值对
get key 按key获取value
mset key1 value [key2 value2 ...] 添加/修改一个至多个键值对
mget key1 [key2 ...] 按key获取一至多个value
   
append key value 在原有value后追加内容
strlen key 查看字符串长度
getrange key startindex endindex 获取范围时[startindex,endindex]的子串
   
set key value nx setnx key value 仅在key不存在时,添加一个键值对
set key value xx 仅在key已存在时,添加一个键值对
set key value get getset key value 修改一个键值对并返回原值,原值不存在则返回nil
msetnx key1 value[key2 value2 ...] 批量版setnx
   
incr key 按key创建值为1的value,或使value增长
incrby key 数值 按key使value增长(increase)给定数值
decr key 按key使value减小(decrease)1
decrby key 数值 按key使value减小(decrease)给定数值
重点  
expire key 秒数 设定一个生存时间
ttl key 查看生存时间的剩余秒数(*kev不存在则返回-2,永久键值对则返回)
pexpire key毫秒数 毫秒版expire
pttl key 毫秒版ttl
persist key 持久化(取消生存时间)
   
set key value ex秒数 setex key秒数value set + expire
set key value px毫秒数 psetex key毫秒数value set + pexpire
set key value exat unix秒 设置一个unix秒的过期时刻
set key value pxat unix毫秒 设置一个unix毫秒的过期时间
set key value keepttl set时不重置ttl

5、散列表

   
hset key field1 value1 [field2 value2 ...] 添加/修改一个键与一至多对字段和值
hget key field 按key和field获取一对value
hmget key field1[feld2 ...] 按key和field获取一至多对value
hgetall key 按key获取feld获取全部的field-value
hdel key field1[field2 ...] 删除一至多对field-value
hsetnx key field value 仅在field不存在时添加一对field-value
hkeys key 查看一个散列表中所有的field
hvals key 查看一个散列表中所有的value
hlen key 统计一个散列表中有多少对field-value
   
hexists key field 查询一个field是否存在
hstrlen key field 按key和field查看value的长度
   
hincrby key field整数值 按key和field使value增长(increase)给定数值
hincrbyfloat key field 小数值 按key和field使value增长(increase)给定数值

6、列表(List)

   
rpush key valueO [value1 ...] 在列表右侧推入1至多个值
lpush key [... value1] valueO 在列表左侧推入1至多个值
rpop key [数量] 从列表右侧弹出(指定数量的)值★全部弹出后,key也会被删除
lpop key [数量] 从列表左侧弹出(指定数量的)值*全部弹出后,key也会被删除
rpushx key value0 [value1 ...] 仅当列表存在时,在列表右侧推入1至多个值
lpushx key [... value1] value0 仅当列表存在时,在列表左侧推入1至多个值
lrange key 0 -1 查询这个List集合中所有值
   
lset key *index value 修改指定位置的值
linsert key before/after定位value value 在定体value前/后插入一个值
lindex key *index 按索引查看值(从0开始,也就是数值下标)
Irange key *startindex *endindex 查看给定范围的值
llen key 查看队列长度
lrem key 数量value 删除指定值(*数量为正代表从左侧开始删除,数量为正表从右侧开始删除)
ltrim key *startindex *endindex 将列表修剪到给定范围

索引从0开始,-n表示倒数第n个

7、集合(Set):你存进去的数据都是随机的

   
sadd key string×[stringY ...] 添加1至多个成员
srem key stringX [stringY ...] 删除1至多个成员
scard key 返回成员数量,*集合基数cardinality
sismember key string 查看是否存在指定成员(1 有--0 没有)
smismember key string×[stringY ...] 批量查看是否存在指定成员
smembers key 查看集合中所有成员
srandmember key [数量] 随机查看指定数量的成员
spop key [数量] 随机取出指定数量的成员
smove key1 key2 string 将指定成员从集合1移至集合2
sinter key1 [key2 ...] 查看给定集合的交集
sinterstore newkey key1 [key2 ...] 存储给定集合的交集
sunion key1 [key2 ...] 查看给定集合的并集
sunionstore newkey key1 [key2 ...] 存储给定集合的并集
sdiff key1 [key2 ...] 查看给定集合的差集
sdiffstore newkey key1 [key2 ...] 存储给定集合的差集
   

8、有序集合(Set)

   
zadd key [nx/xx] gt/lt[incr] score1 stringX [score2 stringY ...] 添加1至多个成员:
XX:仅当成员存在时修改 NX:仅当成员不存在时添加成员
LT(less than) : 仅当分数低于原来的分数时才更新分数 GT(greater than):仅当分数高于原来的分数时才更新分数
NX:不可以与LT/GT同时使用 CH(changed) :返回变更的成员数量 (默认返回新增的成员数量)
incr:累加分数(选择incr时,只能操作一个分数-成员对)  
   
zrem key stringX[stringY ...] 删除1至多个成员
zcount key minScore maxScore 返回指定分数区间内的成员数量支持开区间:分数前加"(""支持无穷大: "-inf"负无穷大,"+inf"正无穷大
zscore key string 查看成员分数(*成员不存在时返回nil)
zmscore key stringX[stringY ...] 批量查看成员分数(*成员不存在时返回nil)
zcard key 查看成员数量
More Actionszincrby key数值string 将指定成员的分数增加给定数值

9、遍历

   
scan游标match格式[type 指定类型] 遍历一定数量的key,游标:开始遍历的位置,从0开始,scan命令将返回遍历结束位置,如果返回0,说明已经遍历到了最后一个,match:指定key的格式,*为通配符count:指定遍历结束的游标,默认为10type:指定遍历的类型
hscan key游标match格式 遍历指定散列表中的字段与值
sscan key 游标match 格式 遍历指定集合中的成员
zscan key游标match格式 遍历指定有序集合中的成员与分数

10、事务

 

11、发布订阅模式

两台ubuntu客户端

一个发送,一个接收

  • 首先订阅一个终端(subscribe订阅一个平台,也可以订阅多个)

    subscribe 用户名
  • 多个终端都可以进行访问这个终端,(publish发行,在那个平台发行信息)

    publish 用户名 发行的内容
  • 总结:相当于一个人创建,多个人可以进去访问,还可以添加数据

  •  
posted @ 2024-03-02 13:51  菜鸡前来  阅读(26)  评论(0编辑  收藏  举报