返回顶部
首页 > 资讯 > 数据库 >Redis的通用命令有哪些
  • 756
分享到

Redis的通用命令有哪些

2024-04-02 19:04:59 756人浏览 薄情痞子
摘要

这篇文章主要讲解了“Redis的通用命令有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis的通用命令有哪些”吧!Redis 是什么Redis 是

这篇文章主要讲解了“Redis的通用命令有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis的通用命令有哪些”吧!

Redis 是什么

Redis 是 开源,内存 中的数据结构存储系统,它可以用作数据库缓存和消息中间件。它支持多种类型的数据结构,如 字符串strings, 散列 hashes, 列表 lists, 集合 sets, 有序集合 sorted sets 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。

Redis 还内置了 复制(replication),lua脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

嗯,没错这就是 redis 中文官方网站上面的介绍,简洁明了。

NoSQL 是什么

我们知道 redis 是一种非关系型数据库 NoSQL 。而为什么出现 Nosql?NoSQL 又是什么呢?

单机数据库的年代

在一个网站访问量不大的时候,我们使用一个数据库就足以应对流量请求。

Redis的通用命令有哪些

缓存 + 拆分

随着访问量的上升,一个数据库已经不能满足我们的需求了。为了更高的性能,我们在中间加上了一个缓存层并且将数据库做了集群、结构优化和读写分离。

Redis的通用命令有哪些

而这里的缓存就是 NoSQL,当然做缓存也只是 NoSQL 的一种功能,就像 Redis 并不仅仅有缓存这一种功能。比如它还能实现 简单的消息队列,解决Session共享,计数器,排行榜,好友关系处理 等等功能,可见 Redis 是一个非常强大工具,让我们来学习它吧!

Redis 通用命令

首先我们抛开数据类型来讲关于 Redis 的通用命令。

Redis的通用命令有哪些

操作 key 和 value

Redis 是一种 key value 存储的缓存数据库,所有的数据都有一个自己唯一的key。

这里为了方便演示,我使用了字符串相关的设置命令

  •  keys [pattern] 获取符合要求的所有key。时间复杂度为 O(n),一般在生产环境中不使用,因为 Redis 是单线程的,执行耗时的任务会阻塞其他任务。一般会使用 scan 命令替代(非阻塞)。

Redis的通用命令有哪些

  •  dbsize 获取当前存储数据个数。

  •  exists key 判断是否存在该key

  •  del key 删除指定数据

  •  type key 获取指定key的数据类型

  •  rename key newkey 重命名

Redis的通用命令有哪些

过期时间

Redis 中很多数据都是用来作为缓存数据的,而作为缓存就需要有过期时间,在 Redis 中提供了很强大的过期时间设置功能。

  •  expire key seconds 为某个 key 设置过期时间。

  •  ttl key 查看某个 key 的剩余时间,返回正数代表剩余的时间,-1代表永久,-2代表已过期或不存在。

Redis的通用命令有哪些

Redis 的五种基本数据类型

在上面我说到了很多 Redis 作为缓存能实现的其他功能,比如计数器,排行榜,好友关系等,这些实现的依据就是靠着 Redis 的数据结构。在整个 Redis 中一共有五种基本的数据结构(还有些高级数据结构以后会讲),他们分别是 字符串strings, 散列 hashes, 列表 lists, 集合 sets, 有序集合 sorted sets。

字符串 string

在绝大部分编程语言中都有 String 字符串类型,对于作为数据库的 Redis 也是必不可少的。

Redis的通用命令有哪些

  •  set key value 设置值

  •  get key 获取某个key的值

  •  mset key1 value1 key2 value2 批量设置并且是原子的,可以用来减少网络时间消耗

  •  mget key1 key2 批量获取并且是原子的,可以用来减少网络时间消耗 

Redis的通用命令有哪些

  •  incr key 自增指定key的值

  •  decr key 自减指定key的值

  •  incrby key value 自增指定数值

  •  decrby key value 自减指定数值

  •  incrbyfloat key floatvalue 增加指定浮点数,前面几个操作就可以用来实现计数器的功能。

Redis的通用命令有哪些

  •  setnx key value 如果不存在该key则可以设置成功,否则会失败,加上过期时间限制,则是redis实现分布式的一种方式(后面会提到)。

  •  set key value xx 与前面相反,如果存在则设置成功,否则失败(相当于更新操作)

Redis的通用命令有哪些

hash

Redis的通用命令有哪些

其实我们可以理解 hash 为 小型 Redis ,Redis 在底层实现上和 Java 中的 HashMap 差不多,都是使用 数组 + 链表 的二维结构实现的。

Redis的通用命令有哪些

不同的是,在 Redis 中字典的值只能是字符串,而且他们 rehash 的方式不一样,在 Redis 中使用的是 渐进式rehash 。

在 rehash 的时候会保留新旧两个 hash 字典,在数据迁移的时候会将旧字典中的内容一点一点迁移到新字典中,查询的同时会查询两个 hash 字典,等数据全部迁移完成才会将新字典代替就字典。

下面我们来看一下关于 hash 的基本操作。

  •  hset key field value 设置字典中某个key的值

  •  hsetnx key field value 设置字典中某个key的值(不存在的)

  •  hmset key field1 value1 field2 value2 … 批量设置

  •  hget key field 获取字典中某个key的值

  •  hmget key field1 field2 批量获取

  •  hgetall key 获取全部   

Redis的通用命令有哪些

  •  hdel key field 删除某个key

  •  hexists key field 判断是否存在

  •  hlen key 获取指定key对应的字典中的存储个数

  •  hvals key 返回所有的value

  •  hkeys key 返回所有的key   

Redis的通用命令有哪些

Redis的通用命令有哪些

  • hincrby key field increValue 增加某个value的值(也可以增加负数)

  • hincrbyfloat key field floatValue 增加某个value的值(浮点数)

Redis的通用命令有哪些

list

Redis 中的列表相当于 Java 中的 LinkedList(双向链表) ,也就是底层是通过 链表 来实现的,所以对于 list 来说 插入删除操作很快,但 索引定位非常慢。

Redis的通用命令有哪些

Redis 提供了许多对于 list 的操作,如出,入等操作,你可以充分利用它们来实现一个 栈 或者 队列。

Redis的通用命令有哪些

下面我们来看一下关于 list 的基本操作。

  •  lpush key item1 item2 item3… 从左入栈

  •  rpush key item1 item2 item3… 从右入栈

  •  lpop key 从左出栈

  •  rpop key 从右出栈

  •  lindex key index 获取指定索引的元素 O(n)谨慎使用

  •  lrange key start end 获取指定范围的元素 O(n)谨慎使用   

Redis的通用命令有哪些

  • linsert key before|after item newitem 在指定元素的前面或者后面添加新元素

  • lrem key count value 删除指定个数值为value的元素

    •   count = 0 :删除所有值为value的元素

    •   count > 0 :从左到右删除 count 个值为 value 的元素

    •   count < 0 :从右到做删除 |count| 个值为 value 的元素

  •  ltrim key start end 保留指定范围的元素

  •  lset key index newValue 更新某个索引的值

Redis的通用命令有哪些

  •  blpop key timeout 没有则阻塞(timeout指定阻塞时间 为0代表永久)

  •  brpop key timeout 没有则阻塞(timeout指定阻塞时间 为0代表永久) 这两个可以用来实现消费者生产者

Redis的通用命令有哪些

总结来说我们可以使用 左入又出或者右入左出 来实现队列,左入左出或者右入右出 来实现栈。

set

Redis 中的 set 相当于 Java 中的 HashSet(无序集合),其中里面的元素不可以重复,我们可以利用它实现一些去重的功能。我们还有对几个集合进行取交集,取并集等操作,这些操作就可以获取不同用户之间的共同好友,共同爱好等等。

Redis的通用命令有哪些

下面我们就来看一下关于 set 的一些基本操作。

  •  sadd key value 添加元素

  •  sdel key value 删除某个元素

  •  sismember key value 判断是否是集合中的元素

  •  srandmember key count 随机获取指定个数的元素(不会影响集合结构)

  •  spop key count 从集合中随机弹出元素(会破坏结合结构)

  •  smembers key 获取集合所有元素 O(n)复杂度

  •  scard key 获取集合个数

Redis的通用命令有哪些

  •  sinter set1 set2 &hellip; 获取所有集合中的交集

  •  sdiff set1 set2 &hellip; 获取所有集合中的差集

  •  suNIOn set1 set2 &hellip; 获取所有集合中的并集

Redis的通用命令有哪些

zset

Redis 中的 zset 是一个 有序集合,通过它可以实现很多有意思的功能,比如学生成绩排行榜,视频播放量排行榜等等。

Redis的通用命令有哪些

zset 中是使用 跳表 来实现的,我们知道只有数组这种连续的空间才能使用二分查找进行快速的定位,而链表是不可以的。跳表帮助链表查找的时候节省了很多时间(使用跳的方式来遍历索引来进行有序插入),如果不了解跳表的同学可以补习一下。

Redis的通用命令有哪些

Redis 中的事务和管道

管道 Pipeline

在某些场景下我们在一次操作中可能需要执行多个命令,而如果我们只是一个命令一个命令去执行则会浪费很多网络消耗时间,如果将命令一次性传输到 Redis 中去再执行,则会减少很多开销时间。

但是需要注意的是 pipeline 中的命令并不是原子性执行的,也就是说管道中的命令到达 Redis 服务器的时候可能会被其他的命令穿插。

Redis的通用命令有哪些

Redis的通用命令有哪些

事务

关系型数据库具有 ACID 特性,Redis 能保证A(原子性)和I(隔离性),D(持久性)看是否有配置 RDB或者 AOF 持久化操作,但无法保证一致性,因为 Redis 事务不支持回滚。

我们可以简单理解为 Redis 中的事务只是比 Pipeline 多了个原子性操作,也就是不会被其他命令给分割,如上图。

  •  multi 事务开始的标志

  •  exec 事务执行

Redis的通用命令有哪些

  •  discard 清除在这个事务中放入队列的所有命令,即解除整个事务。

  •  watch key 在事务开始前监控某个元素,如果在提交事务的时候发现这个元素的值被其他客户端更改了则事务会运行失败。

  •  unwatch key 解除监控

Redis的通用命令有哪些

感谢各位的阅读,以上就是“Redis的通用命令有哪些”的内容了,经过本文的学习后,相信大家对Redis的通用命令有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: Redis的通用命令有哪些

本文链接: https://lsjlt.com/news/71709.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis的通用命令有哪些
    这篇文章主要讲解了“Redis的通用命令有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis的通用命令有哪些”吧!Redis 是什么Redis 是...
    99+
    2024-04-02
  • Redis常用的命令有哪些
    这篇文章主要介绍“Redis常用的命令有哪些”,在日常操作中,相信很多人在Redis常用的命令有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis常用的命令有哪些”...
    99+
    2024-04-02
  • Redis命令有哪些
    这篇文章主要介绍了Redis命令有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 密码登录:1. redis-cli -h 1...
    99+
    2024-04-02
  • Redis shell有哪些常用的命令?
    本篇文章展示Redis中shell常用的命令使用方法,命令示例简明扼要容易理解,如果在日常工作遇到这个疑问。希望大家通过这篇文章,找到解决疑问的办法。Redis-cliredis-cli的选项非常多,除了常...
    99+
    2024-04-02
  • Redis中常用的命令有哪些
    这篇文章将为大家详细讲解有关Redis中常用的命令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  Redis提供了丰富的命令(command)对数据库和各种数据类...
    99+
    2024-04-02
  • redis select命令有哪些用途
    切换数据库:使用 SELECT 命令可以切换到指定的数据库,Redis 支持多个数据库,默认有 16 个数据库,编号从 0 到 1...
    99+
    2024-04-28
    redis
  • redis管理命令有哪些
    这篇文章主要介绍“redis管理命令有哪些”,在日常操作中,相信很多人在redis管理命令有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”redis管理命令有哪些”的疑惑...
    99+
    2024-04-02
  • redis select命令的功能有哪些
    在多个数据库之间切换:可以使用SELECT命令在不同的数据库之间进行切换,Redis默认有16个数据库,编号从0到15。 查...
    99+
    2024-04-28
    redis
  • Redis字符串命令有哪些
    这篇文章主要介绍“Redis字符串命令有哪些”,在日常操作中,相信很多人在Redis字符串命令有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis字符串命令有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-19
  • linux命令通配符有哪些
    Linux命令通配符有以下几种:1. 星号(*):匹配任意长度的任意字符。2. 问号():匹配任意单个字符。3. 方括号([ ]):...
    99+
    2023-08-24
    linux
  • redis中setnx命令的应用场景有哪些
    分布式锁:在分布式环境中,可以使用setnx命令来实现分布式锁,确保同一时刻只有一个客户端能够获取锁。 防止重复提交:当用户...
    99+
    2024-03-07
    redis
  • redis中getset命令的应用场景有哪些
    实现原子性的操作:利用getset命令可以实现原子性的操作,即同时获取原来的值并设置新的值,避免在多线程环境下出现数据不一致的问...
    99+
    2024-03-07
    redis
  • redis中setex命令和set命令有哪些区别
    这篇文章主要介绍了redis中setex命令和set命令有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。导语:Redis Setex...
    99+
    2024-04-02
  • Redis常用监控信息命令有哪些
    本篇内容主要讲解“Redis常用监控信息命令有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis常用监控信息命令有哪些”吧!查看启动到当前处理命令总数...
    99+
    2024-04-02
  • linux网络通讯命令有哪些
    linux中的网络通讯命令有:1.dip命令,以拨号IP的方式建立对外的双向连接;2.getty命令,设置终端机模式,连线速率和管制线路;3.talk命令,与其他使用者对谈;4.write命令,传讯息给其他使用者;5.ytalk命令,与其他...
    99+
    2024-04-02
  • redis中控制事务的常用命令有哪些
    小编给大家分享一下redis中控制事务的常用命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!相关命令介绍:注意:------MULTI,EXEC,DISCARD才是显式开启并控制事...
    99+
    2024-04-02
  • Redis中事务操作的命令有哪些
    小编给大家分享一下Redis中事务操作的命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!命令multi与exec命令行127.0.0.1:6379> multi O...
    99+
    2024-04-02
  • DOS下测试通讯的常用命令有哪些
    这篇文章主要介绍DOS下测试通讯的常用命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!DOS下测试通讯的常用命令 dir>prn命令 dir>prn 或 dir>lpt1是在DOS下测试通讯...
    99+
    2023-06-08
  • Redis命令行工具有哪些使用方法
    这篇文章主要介绍“Redis命令行工具有哪些使用方法”,在日常操作中,相信很多人在Redis命令行工具有哪些使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis命令行工具有哪些使用方法”的疑惑有所...
    99+
    2023-06-04
  • redis中数据类型命令有哪些
    这篇文章主要介绍了redis中数据类型命令有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。redis是键值对的数据库,有5中主要数据类型...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作