redis安装与基本使用

2023-05-16

redis安装与基本使用

文章目录

  • redis安装与基本使用
    • 一、redis在Ubuntu中的安装
    • 二、redis常用命令
    • 三、redis基本类型
      • 1、String
      • 2、List
      • 3、set
      • 4、Hash
      • 5、Zset有序集合
      • 6、geospatical 地理位置
      • 7、Hyperloglog 网站访问量计算(有错误率)
      • 8、Bitmaps

一、redis在Ubuntu中的安装

1、sudo apt install redis或sudo apt install redis-server

2、将/etc/redis/redis.conf文件移动到一个自主目录中(目的是为了后续集群的部署,也方便对配置文件修改出错时能够重新配置)

例如:我放置在了/root/yjnconfig目录中

3、修改一些配置信息:

将移动后的配置文件打开,修改如下配置信息

image-20220208210019926

image-20220208210107531

3、执行命令 redis-server /root/yjnconfig/redis.conf 以开启我们复制后的redis

4、执行redis-cli 以打开客户端

在客户端中使用ping命令测试连通性,返回PONG即为正常

image-20220208210315241

5、还可以使用ps -ef|grep redis命令查看是否启动成功

image-20220208210440930

6、退出时在redis-cli中输入shutdown,接着输入exit退出

image-20220208210526555

此时,可以看到进程中已经没有了redis

image-20220208210611546

7、使用redis-benchmark进行压力测试

image-20220208210814705

二、redis常用命令

1、select [num] 选择号码为num的数据库(共16个数据库,从0开始)

例 select 1

image-20220208204856568

2、set [name] [value] 设置一个字段名为[name],值为[value]

例 set name alpaca 设置一个字段名为name,值为alpaca

image-20220208205110883

3、get [name] 获取字段名为[name]的值

例 get name

image-20220208205236181

4、exists [name] 判断字段[name]是否存在

例 exists name

image-20220208205321520

5、keys * 列出当前数据库所有字段

image-20220208205409917

6、move [name] 1 将当前数据库中的字段name移动到数据库1中

image-20220208205448877

7、expire [name] [second] 设置name字段的过期时间为second秒

image-20220208211311970

8、使用 ttl [name] 查看字段剩余的时间,-2代表没了

image-20220208211415723

9、使用type [name]查看字段类型

image-20220208212239117

10、清空数据库

flushdb:清空当前数据库

flushall:清空所有数据库

三、redis基本类型

1、String

使用场景:计数器、统计多单位数量[name]:[id]:[field]、粉丝数、对象缓存存储

(1)append [name] “string” 追加在name字段后一个值

image-20220208223038287

(2)strlen [name] 获取字段值长度

image-20220208223258721


(3)incr [name] 字段值自增1 (用于统计文章阅读量)

image-20220208223714123

(4)decr [name] 字段值自减1

image-20220208223758625

(5)支持步长的自增自减

image-20220208224012361


(6)字符串截取 getrange [name] [start] [end] start和end均包含

image-20220208224754215

(7)获取全部的字符串 getrange [name] [start] [end] end为-1

image-20220208224936561

(8)字符串替换 setrange [name] [start] [value]

image-20220208225308942


(9)setex [name] [second] [value] 设置过期的时间

image-20220208230052961

(10) setnx [name] [value] 如果不存在该字段才进行赋值 (常用于分布式锁)

image-20220208230135589


(11) mset ([name] [value] ……) 批量赋值

(12) mget ([name] ……) 批量获取

image-20220208230705235

(13) msetnx ([name] [value] ……) 在不存在的情况下批量赋值

只有都不存在时才会执行成功,如果一部分存在 一部分不存在则执行失败 (原子性操作)

image-20220208231023729


(14) 对象

set user:1 {name:zhangsan,age:3} 设置一个user:1 对象 值为json字符来保存对象

image-20220208231958870

image-20220208232018048

更巧妙的设计 [name]:[id]:[field]

mset user:1:name zhangsan user:1:age 2

mget user:1:name user:1:age

image-20220208232042427


(15) getset [name] [value] 组合命令:先get再set,返回值为set之前的值

image-20220208232310463

2、List

  • List是一个链表,可以在结点的左右侧插入值

  • 如果key不存在,会创建新链表

  • 如果key存在,则会新增内容

  • 空链表代表不存在

  • 在两边插入或者改动值效率最高

(1)lpush [name] [value] 将value数据从左侧压入栈

(2)lrange [name] [start] [length] 取长度为length的所有值,从栈顶开始

image-20220209094454709

(3)rpush [name] [value] 将value数据从右侧压入栈

image-20220209095037699

(4)lpop [name] 左出栈

(5)rpop [name] 右出栈

image-20220209095606845


(6) lindex [name] [index] 用下标获取数据

image-20220209100034400

(7) llen [name] 获取列表长度

image-20220209100232268


(8) lrem [name] [num] [value] 移除name列表中num个为value的元素,如果在多个相同元素中只移出一个,则被移除的顺序是从左到右

image-20220209100542206

(9)ltrim [name] [start] [end] 截取start到end之间的shujv,其他数据移出

image-20220209101615580

(10)rpoplpush [source] [destination] 将原列表从右侧弹出有一个数据放在一个新列表的左侧

image-20220209102115224


(11)lset [name] [start] [value] 当列表存在时,使用lset在指定位置设置元素

image-20220209102916262

(12)插入:linsert [name] before|after [pivot] [value] 在某一个基准前或后插入值

image-20220209103630271

3、set

set值不能重复

应用:

  • 共同关注的好友
  • 共同爱好

(1)sadd [name] [value] 添加值

image-20220209110450960

(2)smembers [name] 获取全部值

image-20220209110539016

(3)sismember [name] [value] 查看元素是否存在

image-20220209110619621


(4)scard [name] 获取set集合元素的个数

image-20220209111134124


(5)srem [name] [value] 移除指定元素

image-20220209111720322


(6)srandmember [name] [num] 随机抽取num个数据

image-20220209112136243

(7)spop [name] 随机移除一个元素

image-20220209112731263

(8)smove [source] [destination] [value] 将source集合中的元素value移动到destination集合

image-20220209113056591

(9)差集sdiff 交集sinter 并集sunion

image-20220209113524877

4、Hash

map集合

  • 适合数据进程变动
  • 适合存储对象

(1)hset [集合名] [键] [值] (hmset [集合名] [键] [值])

(2)hget [集合名] [键] (hmget [集合名] [键])

image-20220209115529566

(3)hgetall [name] 获取所有键值对

image-20220209115918295

(4)hdel [name] [key] 删除一个map

image-20220209120703791

(5)hlen [name] 获取长度

image-20220209120950105

(6)hexists [name] [key] 判断是否存在

image-20220209121017314

(7)只获取key或value

image-20220209121146610

(8)设置自增 不存在时设置值

image-20220209121559669

5、Zset有序集合

按照权重排序

  • 班级成绩表
  • 工资表
  • 普通消息、重要消息(带权重)
  • 排行榜

(1)zadd [name] [score] [member]

image-20220209141513964

(2)zrangebyscore [name] [最小值] [最大值]

image-20220209141718743

image-20220209142426952

(3)zrange [name] [start] [end] zrevrange

image-20220209142221216

(4)zrem [name] [member] 移除有序集合中的指定元素

image-20220209143035420

(5)zcard [name] 获取长度

image-20220209143231108


(6)zcount [name] [start] [end] 统计满足区间值的个数

image-20220209143556828

6、geospatical 地理位置

实现原理是ZSet集合,因此可以使用ZSet的命令来操作,比如Zrange Zrem

用途:

  • 两地距离
  • 附近的人

(1)geoadd 名称 经度(-180,+180) 纬度(-85.05,+85.05) 名称

image-20220209151539933

(2)geopos 获取指定城市的经纬度

image-20220209152438173

(3)geodist 计算两个城市的直线距离

image-20220209152712151

(4)georadius 以给定经纬度为中心,找出某一半径内的元素

110 30 模拟自身经纬度 1000为半径 km为单位

附近的人

image-20220209153214371

(5)georadiusbymember 根据城市定位找到周边城市

image-20220209153751741

(6)geohash 返回城市的经纬度的字符串表示(11位)

image-20220209154037296

7、Hyperloglog 网站访问量计算(有错误率)

如果追求无误,可以使用set或自定义数据结构

基数

A {1,3,5,7,8,7}

B {1,3,5,7,8}

基数:不重复的元素 = 5 可以接受误差

image-20220209155454284

8、Bitmaps

位存储

  • 统计疫情感染人数
  • 统计用户信息
  • 打卡
  • 活跃度
  • 登陆情况

365天 = 365bit 节省内存

比如:记录周一到周日的打卡

周一0 打卡

周二1 未打卡

周三2 未打卡

image-20220209160208370

查看某一天是否打卡

image-20220209160341047

统计打卡的天数

image-20220209160419683

欢迎指出错误和不足~

转载请注明出处!

本篇发布在以下博客或网站:

双鱼座羊驼 - 知乎 (zhihu.com)

pisces365的博客_CSDN博客

双鱼座羊驼 - SegmentFault 思否

双鱼座羊驼 的个人主页 - 动态 - 掘金 (juejin.cn)

双鱼座羊驼 - 博客园 (cnblogs.com)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis安装与基本使用 的相关文章

  • vncviewer黑屏问题解决

    最近在重启服务器后 xff0c 用vnc进行远程桌面连接时 xff0c vnc能够连上 xff0c 或有提示错误 xff0c 或无提示错误 xff0c 但显示黑屏 在网上搜索了甚久 xff0c 各种google xff0c 各种baidu
  • Unbuntu 系统及VNC Viewer显示中文

    一行命令搞定 xff1a apt get install ttf wqy zenhei
  • 在嵌入式Linux系统上安装打印机

    简介 xff1a 在Linux环境中安装打印机 xff0c 通常是cups ghostscript等 xff0c 但体积通常很大 xff0c 几十兆 在我应用的环境 xff0c 要求打印模块不大于5M xff0c 在网上搜索的方案是将cup
  • 深度学习环境搭建:win10+GTX1060 + tensorflow1.5+keras+cuda9.0+cudnn7

    2018年 2月8日下午 xff0c 开始搭建环境 我新买了联想Y720笔记本电脑一台 xff0c 希望用它来开展深度学习的探索 根据之前的一点点经验 xff0c 搭建深度学习的环境 本篇博客主要记录的是流程 xff0c 不提供相关数据的下
  • Linux C/C++面试题汇总

    Linux C C 43 43 面试题汇总 前言计算机基础程序的内存空间进程和线程相关 关键字conststaticvolatile C C 43 43 指针 前言 最近面试的比较多 xff0c 看了很多关于面试的内容 xff0c 有些平时
  • NVIDIA TX2--3--NVIDIA Jetson TX2 查看系统版本参数状态及重要指令

    Yolov 1 TX2上用YOLOv3训练自己数据集的流程 VOC2007 TX2 GPU Yolov 2 一文全面了解深度学习性能优化加速引擎 TensorRT Yolov 3 TensorRT中yolov3性能优化加速 xff08 基于
  • freertos之timer浅析

    背景 freertos的定时器与我所见得到其他RTOS不一样 xff0c 我知道的ucosii是在每次tick 43 43 的时候会检查定时器链表 xff0c smc rtos也是这样做的 xff0c rtt没看过源码不清楚 xff0c 而
  • vins-fusion gps融合相关总结

    1 简介 xff1a VINS Fusion在VINS Mono的基础上 xff0c 添加了GPS等可以获取全局观测信息的传感器 xff0c 使得VINS可以利用全局信息消除累计误差 xff0c 进而减小闭环依赖 相比于局部传感器 xff0
  • vins-mono里的坐标系

    vins mono里主要涉及三个坐标系 xff1a word坐标系 xff0c body坐标系即IMU帧坐标系 xff0c cam坐标系即相机帧坐标系 对于单目系统而言 xff0c 初始化时就会确定世界坐标系 首先进行纯视觉初始化 SFM
  • 华三交换机配置telnet远程登录和http、https登录

    1 配置管理IP地址 lt H3C gt system view 进入系统视图 H3C int vlan 1 进入管理VLAN1 H3C Vlan interface1 ip address 1 1 1 1 24 配置默认管理IP地址 H3
  • C——char(字符串)转int

    有时候需要对输入的数字进行计算之类的操作 xff0c 这时候需要将char转int类型 char是一个单独字节 xff0c 可以保存一个本地字符集的内容的类型 一般使用char 的格式来使用 int就是一个范围较小的无符号整数类型 注意 x
  • Linux设备驱动——第三章字符驱动

    当对幸福的憧憬过于急切 xff0c 那痛苦就在人的心灵深处升起 加缪 本章的目的是编写一个完整的字符设备驱动 我们开发一个字符驱动是因为这一类适合大部分简单的硬件设备 字符驱动也比块驱动易于理解 本章的最终目的是编写一个模块化的字符驱动 x
  • FreeRTOS(一)系统时钟和中断

    RTOS系统运行必需要有时钟 xff0c FreeRTOS可以选择SysTick或TIM作为时钟源 本文以再stm32f1上的移植介绍 选择SysTick需要在FreeRTOSConfig h中取消SysTick Handler 函数的映射
  • 对于USB Bulk通信发送0包的理解

    写Device USB驱动的时候 xff0c 当Bulk送信发送的数据长度恰好是wMaxPacketSize的整数倍时 xff0c 是否应该发送0包的问题搞得我焦头烂额 查找了好多资料 xff0c 有的说要加 xff0c 这是USB协议的一
  • upload漏洞专题

    一 upload上传绕过专题 后缀检验绕过 1 黑名单检测绕过 1 上传文件重命名 span class token comment 由于只有后缀是可控的 span 所以常见的后缀为php中 php2 php3 php4 php5 phtm
  • Pony语言学习(七)——表达式(Expressions)语法(单篇向)

    一 字面量 xff08 Literals xff09 xff08 一 xff09 Bool值 xff1a 没啥要说的 xff0c 就是true和false x1f44a xff08 二 xff09 数值 xff08 Numeric Lite
  • Pony语言学习(八):引用能力(Reference Capabilities)

    xff08 如果你有更好的翻译 xff0c 请务必联系我 我们需要和Rust术语做到翻译看齐 xff09 一 总览 xff08 特译 xff1a https tutorial ponylang io reference capabiliti
  • Pony语言学习(二):基础类型 之 Class

    写在前面的 xff1a 这次咱们来唠唠Pony的基础类型 xff0c 这里说的基础类型指的不是int string boolean float什么内置数据类型 xff0c 而是Pony中用来定义类型的几种方法 xff0c 分别是 Class
  • 匿名管道和命名管道

    进程间通信 xff08 IPC xff09 每个进程有各自不同的用户地址空间 xff0c 任何一个进程的全局变量在另一个进程中都看不到 所以进程之间要交换数据必须通过内核 xff0c 在内核中开辟一块缓冲区 xff0c 进程1把数据从用户空
  • ROS修改rosbag中话题的frame_id,以及发布坐标在Rviz中与点云融合显示

    ROS修改rosbag中话题的frame id xff0c 以及发布坐标在Rviz中与点云融合显示 读取rosbag xff0c 修改话题frame id与话题名并循环发布 span class token keyword import s

随机推荐

  • 定义类模板,未定义的引用

    在使用类模板的时候 xff0c 将类的申明和定义放在两个文件中 xff0c 在编译的时候出现 XXX未定义的引用 xff0c 即找不到对应的函数实现 解决办法是 xff1a 将类的定以和申明都放在一个头文件中 xff0c 这样就可以避免上述
  • It is a distutils installed project

    方法1 xff1a 方法2 xff1a 直接全局搜索对应文件 xff0c 具体包括 34 package name 34 文件夹 和 34 package name 34 egg info xff0c 找到后直接删除即可 eg sudo f
  • git将当前修改文件生成patch

    应用场景 xff1a 只想将当前文件夹中改动的文件打包成一个patch xff0c 并不想提交相应的代码 执行命令 xff1a git diff nova api openstack compute servers py nova cmd
  • OpenStack--虚拟机操作(挂起、暂停和搁置)

    1 OpenStack虚拟机三种操作 1 1 挂起和恢复 xff08 suspend和resume xff09 挂起 xff1a openstack中的挂起 xff08 suspend xff09 操作是将虚拟机的内存保存到磁盘中 xff0
  • eMMC 里 DDR52 HS200 HS400 等的含义

    eMMC 里 DDR52 HS200 HS400 这些名词指的是不同的速度 DDR52就是最高 52M clock xff0c 数据速率就是 52 x 2 61 104 HS200 就是最高 200M clock xff0c 单通道 xff
  • Libvirt的job机制3--基本原理

    在Job机制简介中介绍了在libvirt中调用接口时如何使用Job机制 xff1b 在条件变量基本原理中介绍了条件变量的一些基本原理 xff0c 这个是Job机制的基础 本文主要介绍Job机制中用到的一些函数 结构体等变量 xff0c 分析
  • libvirt初始化流程分析

    libvirtd daemon初始化流程比较复杂 xff0c 本文对代码流程进行初步分析 xff0c 可能有不对的地方 xff0c 随时会进行更新和补充 总体代码流程 main remote remote deamon c daemonCo
  • OpenStack调试方法总结

    1 利用remote pdb进行调试 下载链接remote pdb 2 0 0 py2 py3 none any whl 虚拟化文档类资源 CSDN下载 from remote pdb import RemotePdb RemotePdb
  • Compute通过Conductor访问数据库方法

    目录 方法注册 实例序列化与反序列化 conductor与数据库交互 Instance类对象与ComputeManager类对象 compute服务的worker数量 这里以instance save函数为例进行说明 方法注册 nova组件
  • oslo_messaging学习系列之二《OpenStack中使用消息队列》

    目录 消息驱动 oslo messaging模块详解 Transport Target xff08 oslo messaging target Target xff09 Server RPC Client RPC Client参数传递 消息
  • PX4日志文件分析

    FlightPlot画图软件 xff1a http www pixhawk com dev flightplot 支持的日志格式 xff1a PX4自动驾驶仪日志 xff08 px4log 由 sdlog2 生成 xff09 APM二进制日
  • 固定翼航模及四旋翼无人机基础

    目录 一 机架 二 电机参数 1 电机的尺寸和KV值 2 KV值与力 桨的关系 三 桨叶参数 1 桨叶的直径和螺距 2 桨叶选配 3 电机与桨叶搭配表 四 电池与电调 五 航模电子设备连线图解 1 固定翼整机 2 多旋翼整机 3 接收机 4
  • FreeRTOS 之五种内存分配方案(概括总结)

    一 FreeRTOS 之五种内存分配方案 Heap 1 1 在此方案中 xff0c 实现了基础版本的pcPortMalloc xff0c 而没有实现vPortFree xff0c 因此它适用于从来不会删除任务的应用 2 动态分配的内存总是确
  • android9.0以上当切换程序后,service在后台运行一分钟左右就自动停止的解决方案

    service作为安卓四大组件之一 xff0c 在开发项目中很多人都会用到 xff0c 不知道大家有没有发现 xff0c 在android9 0以上的系统 xff0c 如果你在app启动了一个service xff0c 当你切换到另一个ap
  • ubuntu设置当前文件夹路径下快捷键打开终端的办法

    转发 地址链接 xff1a 添加链接描述
  • 移动网络支持

    名词介绍 IMSI 指国际移动用户识别码 xff08 IMSI xff1a International Mobile Subscriber Identification Number xff09 是区别移动用户的标志 xff0c 储存在SI
  • 2021-09-07NVIDIA Jetson Xavier NX载板 RTSO-6002使用TF(MicroSD)卡说明

    NVIDIA Jetson Xavier NX载板RTSO 6002使用TF卡说明 一 将根文件拷贝到格式化好的TF卡中二 开发主机下载对应安装包三 烧录环境搭建四 进入Recovery模式五 最关键的一步 xff0c 烧录 xff08 回
  • Jetson xavier nx | NVIDIA 安装ROS教程

    确认ubuntu软件设置 安装源 sudo sh c 39 echo 34 deb http packages ros org ros ubuntu lsb release sc main 34 gt etc apt sources lis
  • 操作系统课程设计pintos project1实验摘记

    前言 xff1a 本篇意在记录本学期结束的操作系统课程设计pintos project1实验报告和实现过程 整个实验参考了多篇文章也查阅了一些代码 xff0c 其中部分内容或与其他文章相同 xff0c 还请见谅 同时 xff0c 也为了测试
  • redis安装与基本使用

    redis安装与基本使用 文章目录 redis安装与基本使用一 redis在Ubuntu中的安装二 redis常用命令三 redis基本类型1 String2 List3 set4 Hash5 Zset有序集合6 geospatical 地