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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • anaconda卸载方法

    anaconda卸载方法卸载anaconda

    2022年6月15日
    83
  • 《数据库系统概论》第五版 +学习笔记总目录

    《数据库系统概论》第五版 +学习笔记总目录文章目录前言第1章绪论第2章关系数据库第3章关系数据库标准语言SQL第4章数据库安全性第5章数据库完整性第6章关系数据理论前言本篇文章学习书籍:《数据库系统概论》第5版王珊萨师煊编著学习软件:NavicatPremium15&&SSMS采用数据库:SQLSever说明:虽然数据库是SQLSever有些书上的语句执行不了,貌似书采用的是Oracle数据库的SQL,不过没关系,初学我们最重要的是掌握其思想,很多思想和方法语句在

    2022年8月20日
    6
  • 探索衰老机制的中心环节_紫乌鸦刷新机制改了

    探索衰老机制的中心环节_紫乌鸦刷新机制改了前期准备:PC:win7X64vs2013 emwin相关:emwin5.42模拟器,emwin5.42英文手册 同一父窗口下两个控件的刷新不对父窗口进行刷新的前提下,指刷新widget1和widget2. 1.widget为 Framewin或WIndow如果两个widget为Framewin或WIndow类型,则graphic

    2022年10月14日
    3
  • oracle srvctl命令,用srvctl命令配置service

    oracle srvctl命令,用srvctl命令配置service.用srvctl命令配置service除了用DBCA图形方式,还可以使用命令方式配置service,这种方法对于维护远程尤其有用。无论是创建还是维护都是用一个命令srvctl,先看一下srvctl命令和service相关的语法,如下:创建service[oracle@felix1~]$srvctladdservi.用srvctl命令配置service除了用DBCA图形方式,还可以使用…

    2025年11月1日
    2
  • 如何查看任何一下网站的全部二级域名?

    如何查看任何一下网站的全部二级域名?

    2021年10月21日
    406
  • 对java中bean的理解

    对java中bean的理解简单笼统的说就是一个类,一个可复用的类。javaBean在MVC设计模型中是model,又称模型层,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将

    2022年7月8日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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