当前位置: 首页 > news >正文

redis基础知识

redis基础

1.概述

        Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,支持多种类型的数据结构,如字符串(String)、散列(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)等。它可以用作数据库、缓存和消息队列,具有丰富的功能和高效的性能。

        NOSQL:not only sql 不仅仅是数据库。

        非关系型数据库:主流的数据库以外,基本上都是nosql。

        非关系型数据库也有库,库是系统自带的,而且也不需要创建,也不能创建,也无需在库中创建表,直接在预设的库中,以键值对(key--value)的形式保存数据。

        键值之间没有任何关联,值可以是任意合法的数值。

        redis:开源的,使用C语言编写的nosql数据库。

        redis是基于内存运行的,只有执行持久化操作之后数据才会写入到磁盘中去(自带的,定时执行持久化)。

2.redis的工作模式

  • redis是单进程模式,启动一个就是一个进程,一台服务器可以启动多个redis的进程。端口不能相同,默认端口6379。
  • 在工作中,要根据情况来选择开启多少个进程。单进程的话,高并发的情况下处理速度也会降低。进程的数量太多,会影响CPU的效率。

3.Redis的特点

  • 具有极高的读写速度,读取速度11万次/s,每秒钟81000/s的写操作
  • 数据类型非常丰富
  • 支持数据的持久化
  • 原子性,redis的所有操作都是原子性,要么都成功要么都失败
  • 也支持数据的备份和恢复以及集群

4.Redis的应用场景

 排行榜,计数器,存储关系之类,实时日志记录,日志分析。

5.安装redis

apt -y install redis

配置:

vim /etc/redis/redis.conf

68行 bind 127.0.0.1 192.168.206.60 #也可以注释掉

systemctl restart redis

netstat -antp | grep 6379

 6.Redis的基本数据类型

  • String(字符串):最基础的数据结构,可以存储字符串、数字或二进制数据。
  • Hash(哈希):键值对的集合,适合存储对象。
  • List(列表):有序的字符串列表,支持从两端推入/弹出元素。
  • Set(集合):无序的字符串集合,支持自动去重。
  • Sorted Set(有序集合):每个元素关联一个分数,按分数排序。

  (1)string类型

        redis的基础数据类型,最大的存储数据是512MB,可以存储的数据类型,字符串,数字,图片等等。 

exists :判断键值是否存在,存在返回1,不存在返回0

append key value:对已存在的键返回长度,不存在的键直接创建

strlen test1 返回值的长度

#key的值必须是整数

incr key 可以对键值的值自增1

decr key 自减1

incrby key 5 加5

decrby by 5 减5

批量设置

mset key1 1 key2 2 key3 3

批量查询

mget key1 key2 key3

 

 (2)list列表数据类型

lpush test a b c d#倒序

rpush test3 a b c d#正向排序

#列表数据不能用get查看

lrange 键名 start stop

lrange test 0 -1#从第一个开始到最后一个

lindex test 2 #查询指定的索引

lset test 2 20 #把索引下标2的值修改成20

linsert test before a 10

linsert test3 after a 10

del test11 #删除

 

(3) hash数据

        散列类型,用于存储对象,用对象的类别和id构成键名,用字段表示对象化的数据,对象值,就是对象的属性。

hset myhash xy101 great

#名称是myhash 对象是xy105 属性 great

hget myhash xy101#查询

hdel myhash xy105#删除myhash里面的对象和属性

del myhash #删除键

hset myhahs sun xy102 10

hincrby myhash xy102 10 #加10

#没有hdecrby

hmset sum one 1  two 2  three 3

hmget sum one two three

hgetall sun #查看所有

hkeys sun

hvals sun

 

 (4)set 无序集合

声明一个key,键里面的值是元素,元素可以有多个,元素的类型是string。

元素的值是唯一的,不能重复。

多个集合类型之间可以进行并集,交集,集差的运算。

SADD test1 a b c c d #创建

smembers test1#查看 重复的不算

scard test1 #查看元素个数

srandmember test1 #随机的返回该集合中的元素

spop test1 #随机移除一个数

sadd test2 1 2 3 4

smove test1 test2 a#把test1里面的a移到test2

 

(5)sorted set/zset 有序结合

1.声明一个key,key里面有元素,元素可以有多个,元素的类型是string。

2.元素的值是唯一的,不能重复。

区别:

每一个元素都会关联一个double类型的分数,表示的是权重,元素可以通过权重的大小进行排序

zadd test3 1 one 2 two 3 three

#1 2 3 是元素对应的的权重 one two three是对应的值

zrange test3 0 -1 withscores #既显示元素也显示权重

zrange test3 0 -1 #显示元素

zrank test3 one #显示对应元素的索引下标

zcount test3 1 2 #显示权重比属于[1,2]之内

7.Redis的基本操作 

(1)连接Redis服务器 

redis-cli #连接到本地

config set requirepass 密码 #设置密码

redis-cli -h 192.168.206.40 -p 6379 -a 密码 #连接到指定ip的指定端口,用密码登录

redis-cli -h 192.168.206.40 -p 6379 + auth 密码

exit #退出

(2)设置键值对

set 键名 键值  #创建键值对

type  键名 #查看键值的类型

 (3)查看

keys * #查看所有,生产中一般不用,数据太多会崩

get 键名 #查看键值

? 表示任意单个字符

 (4)命令行

redis-benchmark  #检测redis的运行效率

redis-check-aof  #修复AOF的持久化

redis-check-rdb  #修复RDB的持久化文件

redis-benchmark -h 192.168.206.40 -p 6379 -c 100 -n 100000 #命令行

-c 并发

-n 请求

发送100个并发的链接和100000个请求的测试性能

(5)切换库和重命名 

redis的库:

一共有16个库,0-15,默认是0库

切换库:select 数字 #切换到对应的库

每个库之间是独立的

rename 原键名 新键名 #重命名

move second 2 #把second移动到2库

 

(6)键值对的生命周期

如果在默认条件,set的方式,都是永久存储。

set test2 3 ex 30 #设置一个键名test2,键值为3,生命周期为30秒

#EX seconds | PX milliseconds

#ex 以秒为单位计算生命周期

#px 以毫秒为单位计算生命周期

ttl test2 #查看键的生命周期

#生命周期到期之后,会自动从库中删除。

expire test1 30#对已经创建好的键值对,创立生命周期

dbsize:查看当前库有多少个键值对(数量)

 


http://www.mrgr.cn/news/81630.html

相关文章:

  • 2024-我的学习成长之路
  • 【福州市AOI小区面】shp数据学校大厦商场等占地范围面数据内容测评
  • 新年祝词(原创)
  • HTML5+SVG+CSS3实现雪中点亮的圣诞树动画效果源码
  • 使用 Python 编写一个简单的聊天机器人
  • c语言 --- 字符串
  • Git如何设置和修改当前分支跟踪的上游分支
  • 关于DataGridView的使用注意事项
  • 【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)
  • uniapp 文本转语音
  • 机器学习之KNN算法预测数据和数据可视化
  • 爆改RagFlow
  • WPF 绘制过顶点的圆滑曲线(样条,贝塞尔)
  • pg数据库主备库切换
  • Vue.use()和Vue.component()
  • 文件路径与Resource接口详解
  • 算法题(16):原地移除元素
  • 学习笔记 --C#基础其他知识点(持续更新)
  • 【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】
  • jetson Orin nx + yolov8 TensorRT 加速量化 环境配置
  • 《Vue3 二》Vue 的模板语法
  • 精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
  • IS-IS协议 配置实验
  • 音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
  • 六大基础深度神经网络之CNN
  • 【Compose multiplatform教程09】【组件】Image组件