Redis快速入门
1、什么是Redis
-
远程字典服务器:一个开源的基于内存的数据库,常用作键值存储,缓存和消息队列等
-
Redis通常将全部数据存储在内存中,也可以不时的将数据写入硬盘实现持久化,但仅用于重新启动后将数据加载回内存(内存的速度比硬盘快一个数量级)
-
基于key-value 键值对的非关系型数据库
-
基于内存的kv键值对内存数据库(NoSQL一种),mysql是关系数据库
-
redis在某一些场景使用中要明显优于mysql
-
redis通常用于一些特定场景,需要与MySQL一起配合使用
-
相互依存,相互互补
优点:
-
性能极高
-
数据类型丰富,单键值对最大支持512M大小的数据
-
简单易用,支持所有主流编程语言
-
支持数据持久化,主从复制,哨兵模式等高等可用特性
2、安装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] | 添加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游标 | 遍历一定数量的key,游标:开始遍历的位置,从0开始,scan命令将返回遍历结束位置,如果返回0,说明已经遍历到了最后一个,match:指定key的格式,*为通配符count:指定遍历结束的游标,默认为10type:指定遍历的类型 |
| hscan key游标 | 遍历指定散列表中的字段与值 |
| sscan key 游标 | 遍历指定集合中的成员 |
| zscan key游标 | 遍历指定有序集合中的成员与分数 |
10、事务
11、发布订阅模式
两台ubuntu客户端
一个发送,一个接收
-
首先订阅一个终端(subscribe订阅一个平台,也可以订阅多个)
subscribe 用户名 -
多个终端都可以进行访问这个终端,(publish发行,在那个平台发行信息)
publish 用户名 发行的内容 -
总结:相当于一个人创建,多个人可以进去访问,还可以添加数据
-

浙公网安备 33010602011771号