Redis概念理解

编程入门 行业动态 更新时间:2024-10-10 17:25:58

Redis<a href=https://www.elefans.com/category/jswz/34/1770069.html style=概念理解"/>

Redis概念理解

Redis概述

-Redis是一个开源的key-value存储系统

-支持的存储类型包括string(字符串)、list(链表)、set(集合)、zset(有序集合)、hash(哈希)

-数据类型都支持push/popadd/remove以及并集交集差集等很多操作空间,并且都是原子性操作

-支持各种不同方式的排序

-数据都缓存内存

-Redis会周期性的将更新过的数据写入磁盘中或一些操作记录写入文件

-Redi支持master-slave(主从)同步机制

Redis使用场景

-配合关系型数据库做高速缓存

-存储高频次,热访问数据,降低数据库IO压力

-分布式情况下,可以用做session共享

-多样的数据结构存储持久化数据

-最新的数据

-排行榜

-验证码

-计数器,秒杀活动

-去除大量重复数据

-构建队列

-发布订阅消息模式

安装Redis步骤(linux)

1.下载官网下载安装包:

CRUG网站

2.下载安装最新的gcc编译器
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
3.Redis安装包放入/opt目录
4.解压Redis安装包

tar -zxvf redis-6.2.1.tar.gz

5.进入Redis目录并执行 make 命令编译
6.安装Redis

make install

7.安装的目录

/usr/local/bin

8.配置相关信息

-文件信息

redis-benchmark: 性能测试工具
redis-check-aof:修复有问题的 AOF 文件
redis-check-dump:修复有问题的 dump.rdb 文件
redis-sentinel:Redis集群用
redis-server:Redis服务器启动命令
redis-cli:客户端,操作入口

-启动配置

--前台启动:redis-server

注:命令行窗口关闭,服务就会停止

--后台启动:

1.打开redic.conf文件

2.修改配置:daemonize no yes (128行)

3.启动Redis:redis-server /opt/redis-x.x.x/redis.conf

--客户端访问:

redis-cli -p 6379(Redis端口)

-关闭Redis

redis-cli -p 6379(端口) shutdown

Redis的5大基本数据类型

key键

keys * 查看当前库的所有key  ,*后面跟数据会模糊查询
exists key 判断key是否存在
type key 查看key的数据类型
del key 删除一个key
unlink key 根据vlaue进行非阻塞删除
expire key 10 设置key 的过期时间为10s
ttl key 查看key的剩余过期时间,-1:永不过期,-2:已过期
select [1] 切换数据库
dbsize 查看当前数据库的key的数量
flushdb 清空当前库
flushall 清空所有库

String(字符串)

数据结构

String是Redis最基本的类型,与Java的map较为相似,区别在于Java的value是任意类型,而redis中String的value只能是字符串类型。String类型创建的时候会预分配内存且内存空间大于实际的字符串长度,当内存小于1MB时,扩容为现有空间的一倍,空间占有大于等于1MB时,每次扩容为固定的1MB。1一个字符串的value大小最大512MB

常用命令

set <key><value> 添加一个键值对
get <key> 获取一个键的Value
setnx <key><value> key不存在才存储
strlen <key> 获取key的value的长度
incr <key> 将key的value原子性操作+1 只能是数字类型才行
decr <key> 将key的value原子性操作-1 只能是数字类型才行
append <key> <value> 给key的value追加字符
incrby <key> <num> 给key的value原子性操作+num 只能数字类型才行
decrby <key> <num> 给key的value原子性操作-num 只能数字类型才行
mset <key1><value1><key2><value2> 同时设置多个key-value
mget <key1><key2> 同时获取多个key的value
msetnx <key1><value1><key2><value2> 同时设置多个key-value,前提是key不存在
getrange <key> <start> <end> 获取key的value的 start - end 位置的字符
setrange <key> <start> <value> 覆盖value 的 start 位置后面的字符
setex <key> <time> 设置key的过期时间

List(列表)

数据结构

List列表时简单的字符串列表(单键多值),按照顺序从最左/最右插入指定的值,并且按照插入的顺序排值。其底层时一个双向链表,对两端的操作性能很高,通过下标索引的效率较慢List的结构为快速列表(quickList),夸苏列表是由ziplist(压缩列表)链表组成的。在数据较少的情况下会使用压缩列表(其元素是紧挨着存储的,分配到是一块连续的内存),当数据量较多的是否会改为quicklist(快速列表)

quicklists=ziplist+双向指针+ziplist+……(将多个压缩列表通过双向指针串联起来,提高了插入和删除性能的同时也避免了冗余空间)

常用命令

lpush/rpush <key><value><value> 从左/右插入一个或多个值、
lpop/rpop <key> <count> 从左/右边开始吐出count个值,值在健在,值光键亡(相当于删除)
rpoplpush <key1><key2> 从key1的右边吐出一个值插入在key2的最左边
lrange <key> <stat> <stop> 截取 stat - stop 下标之间的所有值(左->右) (不会删除)
lrange <key> 0 -1 0左边第一个值,-1右边第一个值 0-1全部值
lindex <key> <index> 获取列表中指定下标的值(左->右) (不会删除值)
llen <key> 获取列表长度
linsert <key> before <value><newvalue> 在最左边的value后面插入值(左->右)
lrem <key><n><value> 从左边删除n个value
lset <key> <index> <value> 替换列表index下标的值

更多推荐

Redis概念理解

本文发布于:2024-02-13 15:35:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:概念   Redis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!