首页 > 数据库 >51. redis基础命令使用手册

51. redis基础命令使用手册

时间:2024-09-03 12:53:12浏览次数:6  
标签:127.0 0.1 51 redis 6379 使用手册 集合 Redis



redis基础命令使用手册

  • 安装
  • 常用命令
  • 启动
  • 客户端示例
  • Redis使用认证密码登录
  • 修改配置文件
  • 重启Redis
  • 登录验证
  • 在命令行客户端配置密码(redis重启前有效)
  • 在Redis集群中使用认证密码
  • 数据库选择
  • 默认有16个数据库
  • 选择数据库
  • 查看当前数据库
  • 数据结构
  • strings
  • lists
  • 集合
  • 有序集合
  • 哈希
  • 友情链接


安装

make之前确保安装了gcc,未安装则需安装yum install -y gcc。

# cd redis-6
# make
# make install PREFIX=/usr/local/redis

常用命令

./redis-benchmark //用于进行redis性能测试的工具
./redis-check-dump //用于修复出问题的dump.rdb文件
./redis-cli //redis的客户端
./redis-server //redis的服务端
./redis-check-aof //用于修复出问题的AOF文件
./redis-sentinel //用于集群管理

启动

./redis-server ../redis.conf
默认服务端口为6379。

客户端示例

[root@sdns ~]# redis-cli 
127.0.0.1:6379> set name "hello"
OK
127.0.0.1:6379> get name
"hello"
127.0.0.1:6379> shutdown
not connected>

Redis使用认证密码登录

Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用。这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安全性。

修改配置文件

Redis的配置文件默认在/etc/redis.conf,找到如下行:

#requirepass foobared
去掉前面的注释,并修改为所需要的密码:

requirepass myPassword (其中myPassword就是要设置的密码)

重启Redis

如果Redis已经配置为service服务,可以通过以下方式重启:

service redis restart
如果Redis没有配置为service服务,可以通过以下方式重启:

/usr/local/bin/redis-cli shutdown
/usr/local/bin/redis-server /etc/redis.conf

登录验证

设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有任何操作权限。如下:

$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
使用密码认证登录,并验证操作权限:

$ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
看到类似上面的输出,说明Reids密码认证配置成功。

除了按上面的方式在登录时,使用-a参数输入登录密码外。也可以不指定,在连接后进行验证:

$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth myPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
127.0.0.1:6379>

在命令行客户端配置密码(redis重启前有效)

前面介绍了通过redis.conf配置密码,这种配置方式需要重新启动Redis。也可以通命令行客户端配置密码,这种配置方式不用重新启动Redis。配置方式如下:

127.0.0.1:6379> config set requirepass newPassword
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "newPassword"
注意:使用命令行客户端配置密码,重启Redis后仍然会使用redis.conf配置文件中的密码。

在Redis集群中使用认证密码

如果Redis服务器,使用了集群。除了在master中配置密码外,也需要在slave中进行相应配置。在slave的配置文件中找到如下行,去掉注释并修改与master相同的密码即可:

# masterauth master-password

数据库选择

默认有16个数据库

配置文件redis.conf中有:databases :16

选择数据库

redis 切换数据库 3代表数据库的索引,索引从0开始,所以这是切换到了第四数据库
select 3

查看当前数据库

51. redis基础命令使用手册_数据库

数据结构

redis是一种高级的key:value存储系统,其中value支持五种数据类型:

1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)

strings

set mystr "hello world!" //设置字符串类型
get mystr //读取字符串类型

因为是二进制可以把一个图片文件的内容作为字符串来存储。

可以通过字符串类型进行数值操作:

复制代码代码如下:

127.0.0.1:6379> set mynum "2"
OK
127.0.0.1:6379> get mynum
"2"
127.0.0.1:6379> incr mynum
(integer) 3
127.0.0.1:6379> get mynum
"3"

在遇到数值操作时,redis会将字符串类型转换成数值。

由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果,假如,在某种场景下有3个客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的操作,那么,最后mynum的值一定是5。不少网站都利用redis的这个特性来实现业务上的统计计数需求。

lists

redis的另一个重要的数据结构叫做lists,“列表”,数组。

首先要明确一点,redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。我们来看几个例子:

//新建一个list叫做mylist,并在列表头部插入元素"1"
127.0.0.1:6379> lpush mylist "1" 
//返回当前mylist中的元素个数
(integer) 1 
//在mylist右侧插入元素"2"
127.0.0.1:6379> rpush mylist "2" 
(integer) 2
//在mylist左侧插入元素"0"
127.0.0.1:6379> lpush mylist "0" 
(integer) 3
//列出mylist中从编号0到编号1的元素
127.0.0.1:6379> lrange mylist 0 1 
1) "0"
2) "1"
//列出mylist中从编号0到倒数第一个元素
127.0.0.1:6379> lrange mylist 0 -1 
1) "0"
2) "1"
3) "2"

lists的应用相当广泛,随便举几个例子:

1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
2.利用LRANGE还可以很方便的实现分页的功能。
3.在博客系统中,每片博文的评论也可以存入一个单独的list中。

集合

redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

//向集合myset中加入一个新元素"one"
127.0.0.1:6379> sadd myset "one" 
(integer) 1
127.0.0.1:6379> sadd myset "two"
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset 
1) "one"
2) "two"
//判断元素1是否在集合myset中,返回1表示存在
127.0.0.1:6379> sismember myset "one" 
(integer) 1
//判断元素3是否在集合myset中,返回0表示不存在
127.0.0.1:6379> sismember myset "three" 
(integer) 0
//新建一个新的集合yourset
127.0.0.1:6379> sadd yourset "1" 
(integer) 1
127.0.0.1:6379> sadd yourset "2"
(integer) 1
127.0.0.1:6379> smembers yourset
1) "1"
2) "2"
//对两个集合求并集
127.0.0.1:6379> sunion myset yourset 
1) "1"
2) "one"
3) "2"
4) "two"

对于集合的使用,也有一些常见的方式,比如,QQ有一个社交功能叫做“好友标签”,大家可以给你的好友贴标签,比如“大美女”、“土豪”、“欧巴”等等,这时就可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。

有序集合

redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。

很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

老规矩,我们来看几个生动的例子:
//新增一个有序集合myzset,并加入一个元素baidu.com,给它赋予的序号是

127.0.0.1:6379> zadd myzset 1 baidu.com 
(integer) 1
//向myzset中新增一个元素360.com,赋予它的序号是3
127.0.0.1:6379> zadd myzset 3 360.com 
(integer) 1
//向myzset中新增一个元素google.com,赋予它的序号是2
127.0.0.1:6379> zadd myzset 2 google.com 
(integer) 1
//列出myzset的所有元素,同时列出其序号,可以看出myzset已经是有序的了。
127.0.0.1:6379> zrange myzset 0 -1 with scores 
1) "baidu.com"
2) "1"
3) "google.com"
4) "2"
5) "360.com"
6) "3"
//只列出myzset的元素
127.0.0.1:6379> zrange myzset 0 -1 
1) "baidu.com"
2) "google.com"
3) "360.com"

哈希

最后要给大家介绍的是hashes,即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

//建立哈希,并赋值
127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34 
OK
//列出哈希的内容
127.0.0.1:6379> HGETALL user:001 
1) "username"
2) "antirez"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
//更改哈希中的某一个值
127.0.0.1:6379> HSET user:001 password 12345 
(integer) 0
//再次列出哈希的内容
127.0.0.1:6379> HGETALL user:001 
1) "username"
2) "antirez"
3) "password"
4) "12345"
5) "age"
6) "34"


标签:127.0,0.1,51,redis,6379,使用手册,集合,Redis
From: https://blog.51cto.com/zaishu/11907903

相关文章

  • 51c嵌入式~合集4
    一、CPU、MPU、MCU、SOC、SOPC、MCM的含义在嵌入式开发中,我们经常会接触到一些专业术语,例如CPU、MCU、MPU、SOC和MCM等,这些缩写代表了不同类型的电子处理单元,它们在消费电子、计算机硬件、自动化和工业系统中扮演着重要角色。whaosoft的嵌入式合集下面将介绍每个术语的基本含义和它......
  • 基于python的物流企业资产管理系统的设计与实现---附源码89513
     摘 要本文介绍了一种基于Python的物流企业资产管理系统的设计与实现。随着物流行业的快速发展,资产的有效管理和监控变得尤为重要。本文首先分析了物流企业资产管理的需求,包括资产登记、报备、维修、采购等核心功能,并指出了现有系统的不足。在此基础上,我们提出了一个基......
  • Redis
    Redis目录Redis为什么使用redis?Redis的持久化方式?Redis内存淘汰策略?redis有哪几种数据类型redis分布式锁底层原理?为什么使用分布式锁?redis集群模式?redis哨兵(Sentinel)模式?rediscluster原理?redis脑裂问题?什么是缓存和数据库双写不一致?怎么解决?雪崩?​编辑穿......
  • Spring中基于redis stream 的消息队列实现方法
       本文主要介绍了消息队列的概念性质和应用场景,介绍了kafka、rabbitMq常用消息队列中间件的应用模型及消息队列的实现方式,并实战了在Spring中基于redisstream的消息队列实现方法。一、消息队列   消息队列是一种进程间通信或者同一个进程中不同线程间的通信方......
  • redis命令:set
    saddkeymember:向set中添加一个或多个元素127.0.0.1:6379>saddusers2u11u22u33(integer)6sremkeymember:移除set中的指定元素 127.0.0.1:6379>sremusers2u3(integer)1127.0.0.1:6379>sremusers23(integer)1scardkey:返回set中元素个数127.0.......
  • 亲测好用,ChatGPT 3.5/4.0新手使用手册~ 【2024年9月 更新】
    都知道ChatGPT很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,无所不能~那么到底怎么使用呢?其实很简单了,国内AI产品发展也很快,很多都很好用了~我一直在用,建议收藏下来~  有最先进、最新的GPT模型,还有很多其他效率工具都是在各自领域,绝对领先地位的产品~①......
  • 亲测好用,ChatGPT 3.5/4.0新手使用手册~ 【2024年9月 更新】
    都知道ChatGPT很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,无所不能~那么到底怎么使用呢?其实很简单了,国内AI产品发展也很快,很多都很好用了~我一直在用,建议收藏下来~  有最先进、最新的GPT模型,还有很多其他效率工具都是在各自领域,绝对领先地位的产品~①......
  • 吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.09.03 更新】
     以前我也是通过官网使用,但是经常被封号,就非常不方便,后来有朋友推荐国内工具,用了一阵之后,发现:稳定方便,用着也挺好的。最新的GPT-4o、4omini,可搭配使用~1、 最新模型科普:现在人工智能很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同、情感陪伴等,真是无所不能~......
  • 基于AT89C51单片机的自动加料机控制系统设计
    本篇文章论述的是基于AT89C51单片机的自动加料机控制系统设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。系统框图系统硬件框图程序清单ORGLJMPIINT0ORG0080HMAIN:MOVSP,#60HMOVPSW,#00HMOV......
  • windows 即停即用redis(解压即可用)
    之前做过一篇windows安装redis的教程https://blog.csdn.net/qq_27233977/article/details/141789517,这次作为补充,主要针对研发人员,很多时候,研发人员需要装一大堆中间件,但是不是每次都用得上,这个时候即停即用就显得非常有必要。下载github地址(上传者是redis作者):https://git......