redis 数据库概述

news2024/11/24 20:56:06

1b3c9fac2fd6425d8638995b4049c394.gif一 概述

 

   redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关参考文档:http://redisdoc.com/index.html

 

 

 

二 redis 使用场景

登录会话存储:存储在redis中,与memcached相比,数据不会丢失。

排行版/计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排名。还有一些文章阅读量的技术,或者新浪微博的点赞数等。

作为消息队列:比如celery就是使用redis作为中间人。

当前在线人数:还是之前的秀场例子,会显示当前系统有多少在线人数。

一些常用的数据缓存:比如我们的BBS论坛,板块不会经常变化的,但是每次访问首页都要从mysql中获取,可以在redis中缓存起来,不用每次请求数据库。

把前200篇文章缓存或者评论缓存:一般用户浏览网站,只会浏览前面一部分文章或者评论,那么可以把前面200篇文章和对应的评论缓存起来。用户访问超过的,就访问数据库,并且以后文章超过200篇,则把之前的文章删除。

好友关系:微博的好友关系使用redis实现。

发布和订阅功能:可以用来做聊天软件。

 

 

三 redis 和 memcached 比较

  memcached redis

类型 纯内存数据库 内存磁盘同步数据库

数据类型 在定义value时就要固定数据类型 不需要

虚拟内存 不支持 支持

过期策略 支持 支持

存储数据安全 不支持 可以将数据同步到dump.db中

灾难恢复 不支持 可以将磁盘中的数据恢复到内存中

分布式 支持 主从同步

订阅与发布 不支持 支持

 

 

四 redis 在 Ubuntu 系统中的安装与启动

1. 安装

 

1

sudo apt-get install redis-server

2. 卸载

 

1

sudo apt-get purge --auto-remove redis-server

3.启动:redis 安装后,默认会自动启动,可以通过以下命令查看

 

1

ps aux|grep redis

  如果自己手动启动,通过以下命令进行启动:

 

1

sudo service redis-server start

4. 停止

 

1

sudo service redis-server stop

  

 

五 对 redis 的操作

  对redis的操作可以用两种方式,第一种方式采用redis-cli,第二种方式采用编程语言,比如Python、PHP和JAVA等。

 

1. 使用 redis-cli 对 redis 进行字符串操作

 

2. 启动redis

 

1

sudo service redis-server start

3. 连接上redis-server

 

1

redis-cli -h [ip] -p [端口]

4. 添加

 

1

2

3

set key value

  如:

set username xiaotuo

  将字符串值value关联到key。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。

 

5. 删除

 

1

2

3

del key

如:

del username

6. 设置过期时间

 

1

expire key timeout(单位为秒)

7. 查看过期时间

 

1

2

3

ttl key

如:

ttl username

8.查看当前redis中的所有key

 

1

keys *

9. 列表操作

 

在列表左边添加元素:lpush key value

将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。

在列表右边添加元素:rpush key value

将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。

查看列表中的元素:lrange key start stop

返回列表key中指定区间内的元素,区间以偏移量start和stop指定,如果要左边的第一个到最后的一个lrange key 0 -1。

移除列表中的元素

移除并返回列表key的头元素:lpop key

移除并返回列表的尾元素:rpop key

移除并返回列表key的中间元素:lrem key count value

将删除key这个列表中,count个值为value的元素

指定返回第几个元素:lindex key index

将返回key这个列表中,索引为index的这个元素。

获取列表中的元素个数

1

2

3

llen key

如:

llen languages

删除指定的元素

1

2

3

lrem key count value

如:

lrem languages 0 php

  根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种

 

count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count

count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值

count = 0:移除表中所有与value 相等的值

10. set集合的操作 

 

添加元素

1

2

3

sadd set value1 value2....

如:

sadd team xiaotuo datuo

查看元素

1

2

3

smembeers set

如:

smembers team

移除元素

1

2

3

srem set member...

如:

srem team xiaotuo datuo

查看集合中的元素个数

1

2

3

scard set

如:

scard team1

获取多个集合的交集

1

2

3

sinter set1 set2

如:

sinter team1 team2

获取多个集合的并集

1

2

3

sunion set1 set2

如:

sunion team1 team2

获取多个集合的差集

1

2

3

sdiff set1 set2

如:

sdiff team1 team2

11. hash哈希操作 

 

添加一个新值

1

2

3

hset key field value

如:

hset website baidu baidu.com

  将哈希表key中的域field的值设为value。

如果key不存在,一个新的哈希表被创建并进行 HSET操作。如果域 field已经存在于哈希表中,旧值将被覆盖。

 

获取哈希中的field对应的值

1

2

3

hget key field

如:

hget website baidu

删除field中的某个field

1

2

3

hdel key field

如:

hdel website baidu

获取某个哈希中所有的field和value

1

2

3

hgetall key

如:

hgetall website

获取某个哈希中所有的field

1

2

3

hkeys key

如:

hkeys website

获取某个哈希中所有的值

1

2

3

hvals key

如:

hvals website

判断哈希中是否存在某个field

1

2

3

hexists key field

如:

hexists website baidu

获取哈希中总共的键值对

1

2

3

hlen field

如:

hlen website

12. 事务操作

 

  Redis事务可以一次执行多个命令,事务具有以下特征

 

隔离操作:事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。

原子操作:事务中的命令要么全部被执行,要么全部都不执行

开启一个事务

1

multi

  以后执行的所有命令,都在这个事务中执行的。

 

执行事务

1

exec

  会将在multi和exec中的操作一并提交。

 

取消事务

1

discard

  会将multi后的所有命令取消。

 

监视一个或者多个key

1

watch key...

  监视一个(或多个)key,如果在事务执行之前这个(或这些) key被其他命令所改动,那么事务将被打断。

 

取消所有key的监视

1

unwatch

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

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

相关文章

基于springboot篮球竞赛预约平台

开发技术与环境配置 以Java语言为开发工具&#xff0c;利用了当前先进的springboot框架&#xff0c;以MyEclipse10为系统开发工具&#xff0c;MySQL为后台数据库&#xff0c;开发的一个篮球竞赛预约平台。 SpringBoot框架 SpringBoot是一个全新开源的轻量级框架。基于Spring…

Callback CBFS .NET 2022所有产品打包Crack

Callback CBFS .NET 所有产品打包 Callback Technologies CBFS Storage 2022 .NET Edition v22.0.8517 Callback Technologies CBFS Filter 2022 .NET Edition v22.0.8485 Callback Technologies CBFS Disk 2022 .NET Edition v22.0.8464 Callback Technologies CBFS Connect …

UART-STM32

UART-STM32 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 第一步,开启时钟,把需要用的USART和GPIO的时钟打开 第二步,GPIO初始化,把TX配置成复用输出,RX配置成输入 第三步,配置USART,直接使…

Kanzi Studio介绍与安装注意

文章目录 Kanzi介绍部署 Kanzi 应用程序到 Windows Kanzi介绍 Kanzi UI Solution是一个完整的UI解决方案&#xff0c;为嵌入式的UI的设计、开发和部署提供了一套完善的开发平台。它成功解决了实现和众多图形化用户界面分化的问题&#xff0c;使得用户界面的设计者和编程者可以…

vue的搭建以及命令

0.0 课程介绍 Vue介绍 【了解】 Vue项目的搭建 【掌握】 项目目录详解【掌握】 Vue组件化【掌握】 Vue的表达式 【重点】 Vue的指令【重点】 1.0 什么是Vue?【了解】 Vue是一个构建用户界面&#xff08;UI&#xff09;的JS库。 1.1Vue的特点 小 20k 【大概11000多行】…

HTTPS加密流程详解

文章目录 HTTPS与HTTP的关系HTTPS基本工作过程对称密钥非对称密钥中间人攻击证书 HTTPS与HTTP的关系 HTTPS协议基于HTTP&#xff0c;只是比HTTP多了一个加密层&#xff0c;为什么要加密呢&#xff1f;因为网络传输的过程中&#xff0c;明文传输的数据都有可能被劫持篡改&#…

系统分析师(一)软考简介

目录 1.证书简介2.考试简介3.考试报名4.各地考试机构5.考试要求6.考试教程用书 考试时间&#xff1a; 每年5月的最后一个周六 1.证书简介 ​ 软考全称是计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;是由国家人力资源和社会保障部、工业和信息化部…

【图】最小生成树

最小生成树&#xff1a;构造连通网的最小代价生成树。 最小生成树有两种算法&#xff1a;普利姆算法、克鲁斯卡尔算法。 普利姆&#xff08;Prim&#xff09;算法 加点&#xff0c;选择相邻点中边权最小的 需要两个一维数组&#xff0c;一个存权值&#xff0c;另一个存起始点…

MySQL 索引篇

什么是索引&#xff0c;索引就相当于一本书的目录。通过索引可以快速查找到对应的数据。 索引常见面试题&#xff1a; 1. 索引的分类&#xff1a; 按数据结构分类&#xff1a; 按物理存储分类&#xff1a;一般分为聚簇索引&#xff08;主键索引&#xff09;&#xff0c;二级…

【Java EE 初阶】文件操作

目录 1.什么是文件&#xff1f; 1.在cmd中查看指定目录的树形结构语法 2.文件路径 从当前目录开始找到目标程序&#xff08;一个点&#xff09; 返回到上一级目录&#xff0c;再找目标程序&#xff08;两个点&#xff09; 2.Java中文件操作 1.File概述 1.属性 2. 构造…

CENTO OS上的网络安全工具(二十二)Spark HA swarm容器化集群部署

在Hadoop集群swarm部署的基础上&#xff0c;我们更进一步&#xff0c;把Spark也拉进来。相对来说&#xff0c;在Hadoop搞定的情况下&#xff0c;Spark就简单多了。 一、下载Spark 之所以把这件事还要拿出来讲……当然是因为掉过坑。我安装的时候&#xff0c;hadoop是3.3.5&a…

Unity Metaverse(七)、基于环信IM SDK实现的好友系统、私聊、群聊

文章目录 &#x1f388; 简介&#x1f388; 用户管理&#x1f388; 好友管理&#x1f388; 聊天管理&#x1f538; 发送与接收消息&#x1f538; 消息处理消息项的对象池管理 &#x1f388; 简介 在之前的文章中已经介绍了如何接入环信IM Unity SDK&#xff0c;及基于该SDK实现…

使用Python 构建球体/正方体/多面体/兔子/八面体等点云,Open3D可视化及重建

使用Python 构建球体/正方体/多面体/兔子/八面体等点云&#xff0c;Open3D可视化及重建 点云生成8面体点并拟合绘制表面重建结果。&#xff08;官方示例兔子&#xff0c;8面体&#xff0c;多面体&#xff0c;球体&#xff09; 1. 效果图8面体多面体效果图**俩个整8面体效果图**…

学生宿舍信息管理系统

系列文章 任务6 学生宿舍信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试宿舍信息录入宿舍信息浏览查询学生所住宿舍楼号、宿舍号…

WPF MaterialDesign 初学项目实战(6):设计首页(2),设置样式触发器

原项目视频 WPF项目实战合集(2022终结版) 26P 源码地址 WPF项目源码 其他内容 WPF MaterialDesign 初学项目实战&#xff08;0&#xff09;:github 项目Demo运行 WPF MaterialDesign 初学项目实战&#xff08;1&#xff09;首页搭建 WPF MaterialDesign 初学项目实战&…

npm、cnpm、yarn、pnpm区别以及pnpm 是凭什么对 npm 和 yarn 降维打击的

安装 1、安装npm需要安装nodejs&#xff0c;node中自带npm包管理器 node下载地址&#xff1a;node.js 2、cnpm安装&#xff08;需要安装npm&#xff09; cnpm是淘宝团队做的npm镜像&#xff0c;淘宝镜像每 10分钟 进行一次同步以保证尽量与官方服务同步。 npm install -g …

secure CRT 自定义主题

文章目录 如何切换 SecureCRT 主题如何新建SecureCRT 主题如何拷贝我的主题,主题名为pic如何设置 SecureCRT 关键字高亮 如何切换 SecureCRT 主题 SecureCRT 自带主题 选择 options -> Edit Default Session -> Terminal -> Emulation -> Terminal xterm optio…

【Linux】-vim的介绍,教你手把手使用vim

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

一台电脑同时安装多个tomcat服务器教程,window同时安装tomcat7、tomcat8、tomcat9三个服务器教程

一台电脑同时安装多个tomcat服务器 . 介绍 A. 解释为什么有时需要同时安装多个Tomcat服务器 应用程序隔离&#xff1a;当你需要在同一台设备上运行多个独立的应用程序时&#xff0c;每个应用程序可能需要使用不同的Tomcat配置和环境。通过同时安装多个Tomcat服务器&#xff0…

车载以太网 - SomeIP - 协议用例 - Messages_02

目录 13.1、验证SomeIP-SD中订阅报文Subscribe和SubscribeAck中IPv4 Endpoint Option中ServiceID一样