Redis(基础指令和五大数据类型)

文章目录

1.基本介绍

1.多种数据结构支持
2.应用场景

2.Redis安装(直接安装到云服务器)

1.安装gcc
1.yum安装gcc
sh 复制代码
yum install gcc
2.查看gcc版本
sh 复制代码
gcc --version
2.将redis6.2.6上传到/opt目录下
3.进入/opt目录下然后解压
sh 复制代码
tar -zxvf redis-6.2.6.tar.gz
4.进入 redis-6.2.6目录
sh 复制代码
cd redis-6.2.6
5.编译并安装
sh 复制代码
make && make install
6.进入 /usr/local/bin 查看是否有redis的命令
sh 复制代码
cd /usr/local/bin

3.启动并使用redis

1.进入 /opt/redis-6.2.6/
sh 复制代码
cd /opt/redis-6.2.6/
2.将里面的redis.conf复制一份到/etc下
sh 复制代码
cp redis.conf /etc/redis.conf
3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
sh 复制代码
vim /etc/redis.conf
3.启动redis,指定刚才的配置文件
sh 复制代码
/usr/local/bin/redis-server /etc/redis.conf
4.检查redis是否启动
1.通过查看进程的方式,可以看到在6379端口监听
sh 复制代码
ps -aux | grep redis
2.通过查看端口监听状态的方式
sh 复制代码
netstat -anp | more
5.既然已经在6379端口监听了,就将这个端口开放,方便以后访问
1.腾讯云开启6379端口
2.宝塔开启6379端口
sh 复制代码
firewall-cmd --permanent --add-port=6379/tcp && firewall-cmd --reload && firewall-cmd --query-port=6379/tcp
6.客户端访问和关闭redis
1.执行/usr/local/bin的redis-cli 指令会默认连接6379端口,也可以指定端口,如下
sh 复制代码
redis-cli -p 6379
2.关闭redis(还是在bin目录下)
1.关闭6379端口的redis
sh 复制代码
redis-cli shutdown
2.指定端口关闭redis
sh 复制代码
redis-cli -p 6379 shutdown
3.在redis命令行的关闭方式
sh 复制代码
shutdown
4.退出命令行:quit

4.redis指令

1.指令文档

https://www.redis.net.cn/tutorial/3506.html

2.基础操作
1.set和get基本操作(默认就是字符串,除非有空格否则可以不加双引号)
2.如果key已经存在,则会覆盖原来的值(跟HashMap很像)
3.输入clear清屏
4.quit/exit 退出命令行,数据依然在
5.help + 命令 获取帮助文档
3.对key操作的指令
1.keys:列出所有的key
sh 复制代码
keys *
2.keys:列出以1结尾的key
sh 复制代码
keys *1
3.exists:判断某个key是否存在,返回1存在,返回0不存在
4.type:判断key的类型
5.del:删除指定的key,成功返回1
6.unlink:异步删除key,不阻塞
7.关于key的过期时间
1.expire key 100:设置key时指定过期时间为100s
2.ttl:查看key还有多少秒过期,-1永不过期,-2表示过期
4.对DB的操作(redis默认有16个库0-15)
1.select 1 切换到1号库
2.dbsize 查看当前库key的数量
3.flushdb 清空当前库
4.flushall 清空所有库(谨慎)

5.Redis五大数据类型

1.官方文档

https://www.redis.net.cn/tutorial/3501.html

2.数据类型
3.string类型
1.append 追加字符到string后面,返回总的字符串长度
1.key存在的情况,直接追加
2.key不存在的情况,就相当于set了
2.strlen 获得值的长度
3.setnx 只有在key不存在的情况才设置key,成功返回1
4.incr 为key存储的数字值+1,如果key不存在则直接设置为1
5.decr 为key存储的数字值-1,如果key不存在则直接设置为-1
6.在incrby 和 decrby 的可以设置步长
7.m 批量设置k-v,具有原子性,一个失败则全部失败
1.mset 批量set
2.mget 批量get
3.msetnx 批量setnx,有一个失败则全部失败
8.getrange 获取key指定部分的值,是闭区间,-1表示最后一个值,-2是倒数第二个
9.setrange 设置key指定部分的值,是闭区间,-1表示最后一个值,-2是倒数第二个
10.setex 设置值的时候同时设置过期时间
11.getset 设置值的同时得到原来的值
6.list类型
1.列表类型底层是双向链表
2.lpush,rpush 向左边或右边插入一个或多个值
1.注意:如果是左边插入的是a,b,c则实际上是c,b,a
3.lrange 查看list的元素,0代表第一个,-1代表最后一个,-2代表倒数第二个,0 -1 则代表所有
4.lpop,rpop从左边或者右边吐出一个值
5.rpoplpush key1列表右边吐出一个值,插入到key2列表的左边
6.lindex 按照下标返回数据
7.llen 获得列表长度
8.linsert 向一个值的前面或者后面插入一个元素
9.lrem 从左边删除n个value
10.list最佳实践
1.系统通知,按照时间顺序展示
2.在这里如果使用lpush,则取出时,会先取出最近加入的消息
7.set
1.基本介绍

set可以自动排重,并且是无序的,跟HashSet差不多

2.sadd 向集合中加入一个或多个元素
3.smembers 取出该集合的所有元素(与加入顺序不一定相同)
4.sismember 判断集合中是否有某个元素
5.scard 判断当前集合中有几个元素
6.srem 删除集合中的某个元素
7.spop 随机吐出集合中的一个元素
8.srandmember 随机取出n个值
9.smove 把集合中的一个元素移动到另一个集合中
10.sinter 返回两个集合的交集
11.ssuion 返回两个集合的并集
12.sdiff 返回两个集合的差集
8.hash
1.基本介绍
2.hset 添加一个或多个键值对,如果key已经存在,就在这个基础上添加
3.hget 获取key对应的field的value,如果没有该field则返回null
4.hmget 批量获取key对应的field的value
5.hexists 查看field是否存在
6.hkeys 查看该key对应的所有field
7.hvals 查看该key对应的所有value
8.hincrby 对value进行加减操作
9.hsetnx 将hash表中key的域field的值设置为value,当且仅当field不存在
9.zset(有序集合)
1.基本介绍
2.zadd 添加一个或多个zset
3.zrange 按照下标来取出元素(默认按照score从小到大排序)
4.zrevrange 按照下标取出元素(逆序)
5.在后面添加 withscores则与score一起返回
6.zscore 查看某个value的排序码
7.zrangebyscore 根据分数从小到大取出指定范围的元素,下标从1开始
8.zrevrangebyscore 根据分数从大到小取出指定范围的元素,先写max再写min
9.zincrby 为key的成员加上增量
10.zrem 删除某个元素
11.zcount 根据分数统计数量
12.zrank 返回value的索引
相关推荐
星恒随风2 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下3 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
小林ixn4 小时前
别再全量塞历史了:用 Redis 给 Agent 装上「短期记忆」
redis·agent
xiaoye-duck4 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人5 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
2601_967987375 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠6 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查
为思念酝酿的痛6 小时前
C语言操作MySQL
数据库·mysql
ShineWinsu6 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
nice_lcj5207 小时前
LRU 缓存入门:它是什么、怎么用、面试怎么手写
java·数据结构·缓存·面试·lru