redis基本入门| 怎么安装redis?什么的是redis?怎么使用?Linux内有哪些基本类型和特殊类型?

2023-11-21 17:10

本文主要是介绍redis基本入门| 怎么安装redis?什么的是redis?怎么使用?Linux内有哪些基本类型和特殊类型?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、Redis下载与安装

二、基本概念

1.什么是Redis?

2.Redis端口多少?

3.Redis是单线程还是多线程?

4.Redis为什么单线程还这么快?

三、Redis的基本操作

四、Redis的五个基本类型

1.Redis-key

2.字符串 string 

3.列表 list

4.集合 set

5.哈希

6.有序集合 zset

五、Redis的三种特殊类型

1.geospatial 地理空间

2.hyperloglog 基数的概念

3.bitmaps


前言:

        本文只是对redis的入门学习,如需更为详细和系统的学习,请访问以下两个链接的参考资料:

        1.百度网盘分享链接:

                链接:https://pan.baidu.com/s/11k14fqNSj2N_YrUUXkEDIw?pwd=1j8i 
                提取码:1j8i

        2.参考资料网址:Redis 数据类型 | 菜鸟教程 (runoob.com)​​​​​​

一、Redis下载与安装

  1. 官网下载安装包:雷迪斯 (redis.io)
  2. 将安装包传到Linux系统
  3. 将安装包拷贝到 /opt
  4. 解压安装包
  5. 进入解压后的目录
  6. 执行make命令
  7. 执行make install命令
  8. 切换到/usr/local/bin目录下
  9. 拷贝Redis的配置文件(redis.conf)到当前目录下
  10. 修改配置文件
  11. 启动Redis的服务器 执行命令 ./redis-server redis.conf
  12. 启动Redis的客户端 执行命令 ./redis-cli -p 6379
  13. 测试是否连接上Redis的服务器 执行命令 ping

二、基本概念

1.什么是Redis?

        Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件 。 它支持多种类型的数据结构,如字符串(strings), 散列(hashes), 列表(lists), 集 合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间 (geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化 (persistence)-- RDB和AOF , 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高 可用性(high availability)

2.Redis端口多少?

        6379

3.Redis是单线程还是多线程?

        单线程。

        Redis是很快的,官方表示,Redis是基于内存操作的,CPU不是Redis的性能瓶颈,Redis的瓶颈就是 根据机器的内存和网络带宽。既然可以使用单线程来实现,就使用单线程了! Redis是C语言实现的,官方数据:读:110000/s 写: 80000/s,完全不比同样使用key-value的 Memcached差

4.Redis为什么单线程还这么快?

        误区1: 高性能的服务器一定是多线程的

        误区2: 多线程(CPU上下文切换)一定比单线程效率高

        核心: Redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,相比多线程,减少了CPU上下文切换的耗时。对于内存系统来说,没有上下文切换效率就是最高的,多次读写都是在一个CPU上的。

三、Redis的基本操作

        Redis默认有16个数据库,默认使用的是第0个数据库,可以通过select切换数据库。

        Redis的命令对大小写不敏感

  • select 切换数据库,格式: select index
  • 查看数据的大小, 格式: dbsize
  • 查看所有的key,格式: keys *
  • 清空当前数据库和清空所有的数据库:flushdb flushall

四、Redis的五个基本类型

1.Redis-key

#########################################################
# SET 设置key
# GET 查看key的值
# EXPIRE 设置key的过期时间
# TTL 查看key剩余的时间
# EXISTS 判断当前的key是否存在
# KEYS * 查看当前所有的key
# DEL key 删除当前的key
# TYPE 查看key存储的value的类型

2.字符串 string 

set get
  • 设置值和获取值: 格式: set key value get key
  • 判断key是否存在,格式: exists key
  • 追加字符串,如果key不存在,相当于set命令,格式: append key value
  • 获取字符串的长度,格式: strlen key
  • 对value进行自增1和自减1操作,格式: incr key decr key
  • 设置加减的步长,格式: incrby key num decrby key num
  • 获取给定范围的字符串值,格式: getrange key start stop
  • 从指定位置开始替换字符串的值,格式: setrange key offset value
  • 设置过期时间,查看剩余时间,格式: setex key seconds value ttl key
  • 如果key不存在则设置,负责失败,格式: setnx key value
  • 同时设置或者获取多个值,格式: mset key1 value1 key2 value2 ... mget key1 key2..
  • msetnx是一个原子操作,要么一起成功,要么一起失败
  • 用string存储对象时key值的设计

小结 ——String类似的使用场景:

  • value除了是字符串也可以是数字!
  • 计数器
  • 统计多单位的数量 对象缓存存储

3.列表 list

        在Redis中,我们可以把list完成栈、队列、阻塞队列 所有的list命令都是用l开头的

  • 从list的左边或者右边插入值,格式: lpush key value rpush key value lrange
  • 获取指定范围的值,格式: lrange key start stop
  • 从列表的左边或者右边移除值,格式: lpop key rpop key
  • 获取指定下标的值,格式: lindex key index
  • 获取列表中的元素个数,格式: llen key
  • 移除列表中的元素,格式: lrem key count value
  • 截取列表的值,格式: ltrim key start stop
  • 移除列表中最后一个元素,将它添加到另一个列表中,格式: rpoplpush key1 key2
  • 根据下标替换列表中的值,格式: lset key index value
  • 在列表中插入值,格式: linsert key before|after value new_value

小结

  • 他实际上是一个链表,before or after, left,right都可以插入值
  • 如果key不存在,创建新的链表
  • 如果key存在,新增内容
  • 如果移除了所有的值,空链表,也代表不存在
  • 在两遍插入或者改动值,效率最高!中间元素,相对来说效率会低一点
  • 队列: LPOP RPUSH
  • 栈: LPOP LPUSH

4.集合 set

  • set中的值是不能重复的
  • sadd 给set中添加值,格式: sadd key value1 value2 ... 
    • 示例,其中第二次命令可以看出,在key(name)后添加value才可以成功执行
        • 返回的是成功添加的个数
  • 获取set中的所有值,格式: smembers key
  • 判断某个值是否在set中,格式: sismember key value
  • 获取set中元素的个数,格式: scard key
  • 删除set中的值,格式: srem key value1 value2....
  • 从set中获取随机值,格式: srandmember key count
    • 示例,假如一个抽奖机制,随机发送奖品
      • 在jiangpin(奖品)中随机抽取shubao(书包)、shuibei(水杯)、qianbi(铅笔)

  • 随机删除指定个数个元素,格式: spop key count
  • 将指定的元素从一个set中移动到另一个set中,格式: smove set1 set2 value
    • 示例,将users中的xiaoli移到到name中
  • 数字集合类:

    • 差集

      交集

      并集

  • 应用
    • 实现交集——抖音中,A用户将所有关注的人放在一个set集合中,将他的粉丝放在一个集合中 可以实现共同关注,共同爱好,二度好友(推荐好友)等
    • 实现差集
    •  实现并集,重复的只显示1遍

5.哈希

hash 可以将哈希看成是一个Map集合,key-value中的value是一个map集合

存放对象时适合用哈希

  • 设置或者获取一个hash的值,格式:设置: hset key field1 value1   获取: hget key field
    • 方便获取单个字段
      •  
    • 方便添加信息
  • 设置或者获取hash的值,格式:设置: hmset key field1 value1 field2 value2 ... 获取:hmget key field1 field2...
  • 获取hash中的所有值:getall
  • 删除指定field的hash键值对,格式: hdel key(对象名称) field(列)
  • hexists 判断hash中的字段是否存在,格式: hexists key field

  • hkeys hvals 获取hash中所有的字段或者值
  • hincrby给hash中指定字段的值加上一个增量
  • hsetnx 如果不存在,则添加,如果存在,则失败,格式: hsetnx key field value
    • hsetnx 有字段会失败,hset有字段会更新
      •  

6.有序集合 zset

可进行排序,按照一定的顺序进行操作,相比于set多了一个权值scores

  • 添加一个值,格式: zadd key scores value
    • 再添加值是按照权值大小顺序添加
      •   
  • 获取zset中一个范围的值,格式: zrange key start stop
    • 可按下标取范围
      •  
  • 将zset中的值按照score从小到大排序输出,格式: zrangebyscore key min max
    • -inf +inf #按照从小到大排序
    • -inf +inf withscores #按照从下到大排序并显示scores
  • 移除zset中指定的元素,格式: zrem key value
  • 查看zset中的元素个数,格式: zcard key
  • 根据score的值统计在给定区间的元素个数,格式: zcount key min max

五、Redis的三种特殊类型

1.geospatial 地理空间

可以用来实现朋友的定位,附近的人,打车距离计算等

城市的经度纬度查询:http://www.jsons.cn/lngcode/

  • geoadd 添加地理位置,格式:geoadd key 纬度 经度 名称
  • geopos 返回给定名称的纬度和经度
  • geodist 返回两个给定位置之间的距离
    • 单位: m 米 km 千米 mi 英里 ft 英尺
  • geohash 返回一个11个字符的geohash字符串 

  • georadius 以给定的纬度经度为中心,找到某一半径内的元素

  • georadiusbymember 以一个成员为中心,查找指定半径范围内容的元素

  • geo的底层就是一个zset集合

2.hyperloglog 基数的概念

        A{1,3,5,7,8,7} B{1,3,5,7,8} A和B的基数(不重复的元素个数) = 5, 可以接受一定的误差!

3.bitmaps

        bitmaps是位图存储的,都是二进制位来进行记录, 所以只要是只有两种状态值的场景,都可以使用 bitmaps来存储。比如:登录、未登录;打卡,未打卡;活跃,不活跃等。

这篇关于redis基本入门| 怎么安装redis?什么的是redis?怎么使用?Linux内有哪些基本类型和特殊类型?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403801

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学