redis 客户端连接及常用命令使用[通俗易懂]

redis 客户端连接及常用命令使用[通俗易懂]一、本地客户端连接[root@localhostredis]#bin/redis-cli127.0.0.1:6379>authrootOK显示”ok”表示连接成功常用命令操作redis的数据结构:redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构value的数据结构:字符串类型string哈希类型hash:map格式列表类型list:linkedlist格式。支持重复元素集合类型set:不允

大家好,又见面了,我是你们的朋友全栈君。

一、本地客户端连接

[root@localhost redis]# bin/redis-cli 
127.0.0.1:6379> auth root
OK

显示"ok"表示连接成功

常用命令操作

redis的数据结构:

redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构

value的数据结构:

  1. 字符串类型 string
  2. 哈希类型 hash : map格式
  3. 列表类型 list : linkedlist格式。支持重复元素
  4. 集合类型 set : 不允许重复元素
  5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序
  6. 流类型 stream:5.0 版本新增加的数据结构。主要用于消息队列(MQ,Message Queue)

字符串类型 string

string 是 redis 最基本的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:set、get、decr、incr、mget等。

注意:一个键最大能存储512MB。

  • 存储: set key value
127.0.0.1:6379> set username zhangsan
OK
  • 获取: get key
127.0.0.1:6379> get username
"zhangsan"
  • 删除: del key
127.0.0.1:6379> del age
(integer) 1

哈希类型 hash

Redis hash 是一个键值(key=>value)对集合;是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

每个 hash 可以存储 232 -1 键值对(40多亿)。

常用命令:hget、hset、hgetall等。

应用场景:存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。

  • 存储: hset key field value

    127.0.0.1:6379> hset myhash username lisi
    (integer) 1
    127.0.0.1:6379> hset myhash password 123
    (integer) 1
    
  • 获取: hget key field: 获取指定的field对应的值

    127.0.0.1:6379> hget myhash username
    "lisi"
    
  • 获取:hgetall key:获取所有的field和value

    127.0.0.1:6379> hgetall myhash
    1) "username"
    2) "lisi"
    3) "password"
    4) "123"
    
  • 删除: hdel key field

    127.0.0.1:6379> hdel myhash username
    (integer) 1
    

列表类型 list

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

list类型经常会被用于消息队列的服务,以完成多程序之间的消息交换。

常用命令:lpush、rpush、lpop、rpop、lrange等。

列表最多可存储 232 – 1 元素 (4294967295, 每个列表可存储40多亿)。

  • 添加:lpush key value:将元素加入列表左边

    127.0.0.1:6379> lpush myList a
    (integer) 1
    127.0.0.1:6379> lpush myList b
    (integer) 2
    
  • 添加:rpush key value:将元素加入列表右边

    127.0.0.1:6379> rpush myList c
    (integer) 3
    
  • 获取:lrange key start end :范围获取

    127.0.0.1:6379> lrange myList 0 -1
    1) "b"
    2) "a"
    3) "c"
    
  • 删除:lpop key: 删除列表最左边的元素,并将元素返回

  • 删除:rpop key: 删除列表最右边的元素,并将元素返回

集合类型 set

Redis的Set是string类型的无序集合。和列表一样,在执行插入和删除和判断是否存在某元素时,效率是很高的。集合最大的优势在于可以进行交集并集差集操作。Set可包含的最大元素数量是4294967295。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

  • 存储:sadd key value

    127.0.0.1:6379> sadd myset a
    (integer) 1
    127.0.0.1:6379> sadd myset a
    (integer) 0
    
  • 获取:smembers key:获取set集合中所有元素

    127.0.0.1:6379> smembers myset
    1) "a"
    
  • 删除:srem key value:删除set集合中的某个元素

    127.0.0.1:6379> srem myset a
    (integer) 1
    

有序集合类型sorted set(zset)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

sorted set是插入有序的,即自动排序。(升序)

常用命令:zadd、zrange、zrem、zcard等。

当你需要一个有序的并且不重复的集合列表时,那么可以选择sorted set数据结构。

  • 存储:zadd key score value

    127.0.0.1:6379> zadd mysort 60 zhangsan
    (integer) 1
    127.0.0.1:6379> zadd mysort 50 lisi
    (integer) 1
    127.0.0.1:6379> zadd mysort 80 wangwu
    (integer) 1
    
  • 获取:zrange key start end [withscores]

    # 查询所有的数据
    127.0.0.1:6379> zrange mysort 0 -1
    1) "lisi"
    2) "zhangsan"
    3) "wangwu"
    
    # 查询所有的数据及其分数
    127.0.0.1:6379> zrange mysort 0 -1 withscores
    1) "zhangsan"
    2) "60"
    3) "wangwu"
    4) "80"
    5) "lisi"
    6) "500"
    
  • 删除:zrem key value

    127.0.0.1:6379> zrem mysort lisi
    (integer) 1
    

流类型 stream

Redis的作者在Redis5.0中,放出一个新的数据结构,Stream。Redis Stream 的内部,其实也是一个队列,每一个不同的key,对应的是不同的队列,每个队列的元素,也就是消息,都有一个msgid,并且需要保证msgid是严格递增的。在Stream当中,消息是默认持久化的,即便是Redis重启,也能够读取到消息。那么,stream是如何做到多播的呢?其实非常的简单,与其他队列系统相似,Redis对不同的消费者,也有消费者Group这样的概念,不同的消费组,可以消费同一个消息,对于不同的消费组,都维护一个Idx下标,表示这一个消费群组消费到了哪里,每次进行消费,都会更新一下这个下标,往后面一位进行偏移。

  • 存储:xadd name id key value

    # name表示stream的名称  你也可以理解成消息队列的名称
    # id:一般不需要手动指定  默认(`*`)是毫秒-微秒 在往name队列里面塞元素的时候  如果遇到毫秒重复的 则微秒会自动+1  所以也被称为自增ID
    
    # 插入单个字段
    127.0.0.1:6379> xadd newstream * userid 110
    "1621557810145-0"
    127.0.0.1:6379> xadd newstream * userid 111
    "1621557813562-0"
    127.0.0.1:6379> xadd newstream * userid 112
    "1621557817112-0"
    # 插入多个字段
    127.0.0.1:6379> xadd newstream * userid 112 username zhangsan
    "1621557842159-0"
    
  • 获取:xrange key start end [COUNT count]

    # 获取全部数据
    127.0.0.1:6379> xrange newstream - +
    1) 1) "1621557810145-0"
       2) 1) "userid"
          2) "110"
    2) 1) "1621557813562-0"
       2) 1) "userid"
          2) "111"
    3) 1) "1621557817112-0"
       2) 1) "userid"
          2) "112"
    4) 1) "1621557842159-0"
       2) 1) "userid"
          2) "112"
          3) "username"
          4) "zhangsan"
    # 获取前两个数据
    127.0.0.1:6379> xrange newstream - + count 2
    1) 1) "1621557810145-0"
       2) 1) "userid"
          2) "110"
    2) 1) "1621557813562-0"
       2) 1) "userid"
          2) "111"
    # 获取id范围数据
    127.0.0.1:6379> xrange newstream 1621557810145-0 1621557817112-0
    1) 1) "1621557810145-0"
       2) 1) "userid"
          2) "110"
    2) 1) "1621557813562-0"
       2) 1) "userid"
          2) "111"
    3) 1) "1621557817112-0"
       2) 1) "userid"
          2) "112"
    
  • 查询当前stream长度:xlen key

    127.0.0.1:6379> xlen newstream
    (integer) 4
    
  • 删除:xdel key id

    127.0.0.1:6379> xdel newstream 1621557813562-0
    (integer) 1
    

通用命令

keys * : 查询所有的键

type key : 获取键对应的value的类型

del key:删除指定的key value

select :切换数据库

flushdb :清除当前数据库

flushall : 清除全部数据库内容

二、连接远程的redis

远程客户端工具(RedisDesktopManager)使用

百度网盘下载链接:https://pan.baidu.com/s/1EC9GoYGzYysRVm-8IagfHA
提取码:cyfh

image-20210520190632898

注意:需要开启防火墙端口号

[root@localhost /]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
success
[root@localhost /]# systemctl restart firewalld
[root@localhost /]# firewall-cmd --zone=public --list-ports
6379/tcp

连接成功,redis默认有16个数据库

在配置文件(redis.conf)中,找到属性databases可以查看或修改默认值

image-20210520191726429

测试使用

image-20210520193034915

添加 key value

image-20210520193250462

点击可直接查看

image-20210520193843592

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143108.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Generic-Host 快速使用指南

    Generic-Host 快速使用指南.NETCORE中的GenericHost本文以自己在工作中学习和使用.netcoregenerichost作一个总结。前言在创建的ASPNETCORE项目中,我们可以在中看见,

  • 年中总结[通俗易懂]

    年中总结[通俗易懂]年中总结

  • 《FFmpeg从入门到精通》读书笔记(三)

    《FFmpeg从入门到精通》读书笔记(三)写在前面2019.06.20第四章知识点(未进行排版,暂未加入硬编解码部分)FFmpeg转码FFmpeg软编码H.264与H.265FFmpeg本身不支持H.264的编码器,是由FFmpeg的第三方模块对其进行支持,当前常用的编码器为x264,所支持的像素格式主要包括以下几种(使用ffmpeg-hencoder=libx264进行查询)Encoderlibx264[l…

  • Navicat15激活码一直生成不了(注册激活)

    (Navicat15激活码一直生成不了)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlHQE565NV3W-eyJsaWNlbnNlSWQi…

  • 第 3.2 节 SQL

    第 3.2 节 SQL

  • MySQL的锁机制和加锁原理

    MySQL的锁机制和加锁原理MySQL的锁机制和加锁原理文章目录MySQL的锁机制和加锁原理1.行锁2.表锁3.页锁4.乐观锁和悲观锁4.1悲观锁4.2乐观锁5.MySQL/InnoDB中的行锁和表锁问题5.1InnoDB锁的特性6.RecordLock、GapLock、Next-keyLock锁6.1.RecordLock6.2.GapLock6.2.​1什么叫间隙锁6.2.2为什么说gap锁是RR隔离级别…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号