Redis超详细入门教程(基础篇)

news2024/7/6 19:24:20

目录

一、什么是Redis

二、安装Redis

1、Windows系统安装

2、Linux系统安装 

三、Redis通用命令

四、Redis基本命令

五、五种数据结构类型

5.1、String类型

5.2、List集合类型

5.3、Set集合类型

5.4、Hash集合类型

5.5、Zset有序集合类型

六、总结


一、什么是Redis

Redis是一个开源的基于内存的键值对数据库,它的主要特征和作用包括:

1、基于内存,读写速度极快,可以处理大量读写请求。

2、支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,具有丰富的数据表示能力。 3、支持主从复制,提供数据冗余和故障恢复能力。

4、支持持久化,可以将内存数据保存到磁盘中。

5、支持事务,可以一次执行多个命令。

6、丰富的功能,可用于缓存、消息队列等场景。

主要应用场景包括:

1、缓存常见的使用场景,比如缓存查询结果、热点数据等,大大降低数据库负载。

2、处理大量的读写请求,比如访问统计、消息队列等。

3、排行榜、计数器等功能的实现。

4、pub/sub消息订阅。

5、QUE计划任务

6、分布式锁等。

综上,Redis是一个性能极高的内存数据库,支持丰富数据结构,提供持久化、事务等功能,非常适合缓存、消息队列等场景,被广泛应用于各种大型系统中。它的高性能、丰富功能使其成为非关系型数据库的重要选择之一。

二、安装Redis

1、Windows系统安装

Redis官网对于Windows版本已经停止维护了,我直接上传到了云盘,大家可以直接下载:

https://pan.baidu.com/s/1_2vMncYBVI3jKkh9II9Kag?pwd=8hjr

1、解压以后,先双击redis-server.exe启动服务器

运行成功 

2、双击redis-cli.exe启动命令窗口即可

这样就可以在Windows操作Redis了。 

2、Linux系统安装 

可以直接看我这篇博客,步骤完整详细:Linux系统安装部署Redis完整教程(图文详解)

三、Redis通用命令

1、Redis默认有16个数据库,切换到第2个数据库

select 1

2、查看当前数据库key的数量

DBSIZE

3、设置一个key为username,值为mike的数据

set username mike

4、获取key为username的值

get username

5、获取所有的key

keys *

6、清除当前数据库

flushdb

7、清楚所有数据库

flushall

四、Redis基本命令

1、查询key为username是否存在

exists username

2、指定key为username移动到1号数据库

move username 1

3、指定key为username10s后过期

expire username 10

4、查看key为username还有多久过期

 ttl username

5、查看key为username是什么类型

type username

五、五种数据结构类型

5.1、String类型

1、设置key为name的值为htt

set name htt

2、获取key为name的值

get name

3、拼接key为name的值:httstudy

append name study

 4、获取key为name的值的长度

strlen name

5、设置key为view的值加1 

incr view

6、设置key为view的值减1

decr view

7、设置key为view的值加10

incrby view 10

8、设置key为view的值减10

decrby view 10

9、截取下标为0-3之间的字符串,例如:abcdef,截取后abcd

getrange name 0 3

10、从下标为1进行替换字符串,例如:abcdef,替换后a000efg

setrange name 1 000

11、设置key为name的值为hello,10s后过期

setex name 10 hello

12、如果不存在key为title的,值设置为redis,如果存在,则set失败

setnx title redis

13、一次性设置多个值

mset k1 v1 k2 v2 k3 v3
mset user:1:name htt user:1:age 2

14、一次性获取多个值

mget k1 k2 k3
mget user:1:name user:1:age

15、如果k1已经存在,则k1,k4全部设置失败,参考事务的原子性操作

msetnx k1 v1 k4 v4

16、如果不存在key为username的值,则返回nil,然后set进去;如果存在值,则获取原来的值并设置新的值

getset username htt

看了图会更好理解一些!

5.2、List集合类型

1、将一个值或者多个值插入到列表的头部

lpush list 1

2、将一个值或者多个值插入到列表的尾部

rpush list 4

 

3、通过区间获取具体的值

lrange list 0 -1

4、移除list的第一个元素:3

lpop list

5、移除list的最后一个元素:4

rpop list

6、通过下标获得list当中的某一个值

lindex list 0

7、获取list的长度

llen list

 8、移除list集合指定个数的value,移除1个值为2的,精确匹配

lrem list 1 2

9、截取list集合中下标为1到下标为2之间的元素集合,并覆盖原来的list集合

ltrim list 1 2

 10、更新list集合当中下标为0的值为bbb,如果下标0的值不存在,则报错

lset list 0 bbb

11、将一个某一个具体的值插入到某一个具体元素(默认第一个)的前面或者后面

linsert list BEFORE kkk aaa

linsert list AFTER kkk aaa

5.3、Set集合类型

1、往set集合中添加一个元素

sadd set hello

2、查看set集合中所有元素

 smembers set

3、 查看set集合中是否存在某元素

sismember set world

 4、随机抽取出1个元素

srandmember set

5、随机抽取出2个元素

 srandmember set 2

6、随机删除set集合中某个元素

spop set

7、移动set集合中的world元素到set2集合中

smove set set2 world

8、作set2集合减去set集合的差集

sdiff set2 set

9、set和set2的交集

sinter set set2

10、set和set2作并集并去重

sunion set set2

5.4、Hash集合类型

1、往hash集合中存放键值对数据

hset hash username mike

2、从hash集合中获取数据

hget hash username

3、同时往hash集合中添加多个值

hmset hash username jack age 2

4、同时往hash集合中获取多个值

hmget hash username age

5、获取hash集合中所有的键值对

hgetall hash

6、删除hash集合中指定的key字段

hdel hash username

7、获取hash集合的长度

hlen hash

8、判断hash集合中指定字段是否存在

hexists hash username

9、获取hash集合中所有的key

hvals hash

10、获取hash集合中所有的值

hkeys hash

 11、指定hash集合中指定增量

hincrby hash views 1

12、如果不存在则直接设置值,存在则设置失败

hsetnx hash password 123456

5.5、Zset有序集合类型

1、添加一个值

zadd zset 1 first

2、添加多个值

zadd zset 2 second 3 third 4 four

3、获取zset集合中所有元素

zrange zset 0 -1

4、给zset集合中的元素从小到大排序,-inf:负无穷,+inf:正无穷

zrangebyscore zset -inf +inf

5、从小到大排序并输出键值

zrangebyscore zset -inf +inf withscores

6、指定负无穷到1的范围

zrangebyscore zset -inf 1 withscores

7、移除zset集合中指定的元素

zrem zset four

8、查看zset集合中元素个数

zcard zset

 9、反转指定范围

zrevrange zset 1 2

六、总结

以上就是Redis入门教程的详细笔记总结,后续博客主页会继续更新关于Redis的内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/787112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leecode 98验证二叉搜索树

​​​​ 这次的性能真的是超乎想象的好 题目描述 98二叉树 第一种方法 中序遍历 大体的思想就是将遍历的结果存放到数组中 检查数组是否是有序 判断是否符合条件 特点是时间和空间消耗都很大 /*** Definition for a binary tree node.* struct TreeNode {* int val;*…

常见面试题之设计模式--工厂方法模式

1. 概述 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore&…

DAY51:动态规划(十五)买卖股票最佳时机Ⅲ+买卖股票最佳时期Ⅳ

文章目录 123.买卖股票最佳时机Ⅲ(注意初始化)思路DP数组含义递推公式初始化遍历顺序最开始的写法:初始化全部写成0debug测试:解答错误,第0天实际上是对应prices[0]和dp[0] 完整版总结 188.买卖股票最佳时机Ⅳ思路DP数…

【wxWidgets】剪贴板和拖放操作

【wxWidgets】剪贴板和拖放操作 使用剪贴板传输数据时应用程序间的一种交互方式 剪贴板和拖放操作在wxWidgets中共享了一些类来实现数据的传输 数据对象 wxDataObject类时剪贴板操作和拖放操作的核心,该类实例代表了拖放操作中鼠标拖拽的事物和剪贴板中拷贝和粘贴…

【git学习2】多人合作中git的使用

提交代码 中间打勾:commit提交代码 最后点击向上的箭头 push到远程仓库。 团队开发中git的使用 第一步先从远程仓库中某个分支拉下来代码,比如下图只有一个分支master 新建文件夹,存放这个拉下来的项目,克隆项目地址&#xff…

JDK8版本接口的改进(heima)

JDK8版本接口的改进(heima) public class InterfaceTest1 {/*JDK8版本接口改进1.允许编写带有方法体的方法(默认方法)2.允许编写静态方法目的:解决接口的升级问题---------------------------------------注意事项&…

HDFS的设计目标和重要特性

HDFS的设计目标和重要特性 设计目标HDFS重要特性主从架构分块存储机制副本机制namespace元数据管理数据块存储 设计目标 硬件故障(Hardware Failure)是常态,HDFS可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此古见检测和自动快速恢复的H…

基本数据类型和引用数据类型

数据类型的分类 java中的 变量 按照数据类型来分类: Java语言是 强 类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。基本数据类型(4类8种…

[Python] flask运行+wsgi切换生产环境+supervisor配置指南

文章目录 问题背景flask启动方式1(编写main函数):方式2(编译器):方式3(命令行):方法4(重命名文件法):方法5(使用flask命令…

欧盟新规,燃油噩梦?2025年起,高速公路每60公里设立一处快充站

根据外媒The Verge报道,欧洲电动汽车用户将获得更多便捷的待遇,同时还能减少有害温室气体排放,这得益于欧盟理事会最新通过的法规。 根据欧盟的法规要求,自2025年起,TEN-T高速公路系统在欧洲将需要每隔60公里设立一座高…

WEB:ics-07

背景知识 php弱类型 文件上传漏洞 一句话木马 floatval函数 题目 点击项目管理 点击查看源代码&#xff0c;发泄一个view-source.php 访问该网页 进行代码审计 <?php session_start();if (!isset($_GET[page])) {show_source(__FILE__);die(); }if (isset($_GET[page]) &…

ant design vue a-table表格中插入操作按钮(以switch开关 [a-switch]为例)

1.给columns添加列属性 columns() {sortedInfo sortedInfo || {};return [{title: "工程",dataIndex: "outputProject",width: 80},{title: "是否显示小数",dataIndex: "showDecimalsOrnot",width: 80,scopedSlots: { customRender:…

页面设计—FixedContainer固定容器组件详解

一、组件介绍 可任意拖动位置&#xff0c;脱离文档流布局&#xff0c;生成绝对定位的元素 二、如何使用 1、找到FixedContainer组件&#xff0c;拖放到页面位置。 2、设置是否拖动&#xff0c;设置高级样式&#xff0c;也可以在自定义样式里编写css样式 操作步骤如下&…

IO进程线程,标准IO函数

一、什么是IO I&#xff1a;input --->输入&#xff0c;从外部存储设备将数据输入到内存中。 O&#xff1a;output --->输出&#xff0c;数据从内存到外部存储设备。 总结&#xff1a;输入输出就是数据从外存到内存&#xff0c;内存到外存的流向。 二、IO分类 1. 文件…

Arcgis之 KML/KMZ文件转shp

一般我们在Goole Earth上勾画的区域导出后都为KML或者KMZ格式的&#xff0c;但无法在arcgis等软件上直接应用&#xff0c;故需进行一定的转换 1.打开ArcMap&#xff0c;选择ArcToolbox->Conversion Tools->From KML->KML To Layer 得到如下结果&#xff08;由于本KML…

三菱PLC 流水灯控制

方式一思路&#xff1a;每一秒让计数器 C0 的值加一&#xff0c;然后将 C0 对应的值赋值给输出灯 Y10 - Y15。 方式二思路&#xff1a;每一秒让寄存器 D0 的值向左移1位&#xff0c;然后使用组合位元件将 D0 的低八位值传送给输出灯 Y10 - Y17。 后面有更好的思路再来增加。

【Ajax】笔记-使用fetch函数发送AJAX请求

fetch()函数说明与使用方法详解 fetch()是XMLHttpRequest的升级版,用于在JavaScript脚本里面发出 HTTP请求,本文章向大家介绍fetch()的用法,主要包括fetch()的用法使用实例、应用技巧、基本知识点总结和需要注意事项&#xff0c;具有一定的参考价值&#xff0c;需要的朋友可以参…

S-NER: A Concise and Efficient Span-Based Model for NamedEntity Recognition

原文链接&#xff1a;Sensors | Free Full-Text | S-NER: A Concise and Efficient Span-Based Model for Named Entity Recognition Sensors 2022 介绍 NER中的序列标注模型使用条件随机场&#xff08;CRF&#xff09;来获取标签之间的依赖性&#xff0c;存在误差传播的问题&a…

Docker可视化管理工具Portainer多机器安装使用

一、首先得安装docker Docker安装并指定主目录:https://blog.csdn.net/wdy_2099/article/details/77367107 二、使用docker方式安装portainer 安装命令如下&#xff1a; docker run -it -d \-p 8999:9000 \--name portainer \--restart always \-v /var/run/docker.sock:/v…

@vue/cli安装

vue/cli安装 1、全局安装vue/cli包2、查看是否成功 1、全局安装vue/cli包 yarn global add vue/cli2、查看是否成功 vue -V