Redis简明教程:安装、数据类型、系统管理

文章目录

  • 一、安装与启动
    • 1.安装
    • 2.修改配置
    • 3.环境变量
    • 4.启动、停止
    • 5.运行测试
    • 6.查看Redis
  • 二、数据类型
    • 1.Redis strings
    • 2.Redis Lists
    • 3.Redis Hashes
    • 4.Redis Set无序集合
    • 5.Redis sorted Set有序集合
  • 三、系统管理
    • 1.常用key相关的命令
    • 2.时间相关命令
    • 3.设置相关命令CONFIG GET & CONFIG SET
    • 4.查询信息
    • 5.密码设置

官方文档
参考博客1


注意:
在 Redis 中,命令大小写不敏感。

一、安装与启动

我的云服务器是Ubuntu 18.04.1 LTS,以下的命令都是基于这个操作系统。

1.安装

  • 下载:

在下面地址下载好安装包后上传到linux中去:

https://github.com/redis/redis/archive/5.0.5.tar.gz
  • 解压:
tar -zxvf redis-5.0.5.tar.gz
  • 安装:
# 进入 Redis 的 src 目录
cd redis-5.0.5/src
# 进行安装
make && make install PREFIX=/usr/local/redis-5.0.5
# 看到多出来的文件
cd  ../bin
ll

redis-cli 是客户端文件,redis-server 是服务端文件.

2.修改配置

  • 修改配置:
# step1:打开配置文件
vim /usr/local/redis-5.0.5/redis.conf
# step2:搜索daemonize配置
输入/daemonize就会定位到daemonize配置的位置
# step3:输入 a 进入文本编辑状态,将 no 修改为 yes
# step4:输入:wq回车保存

进行如上配置之后,启动 Redis 服务的时候将在后台运行。

3.环境变量

  • 设置环境变量:
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/

添加完成后在任何目录下输入 redis-server 可启动服务器,输入 redis-cli 可启动客户端。

4.启动、停止

  • 启动服务:
# 先启动服务器
redis-server
# 然后另外开启一个终端启动服务端
redis-cli
# 用此命令启动客户端可以避免中文乱码问题
redis-cli --raw
  • 停止服务:
/usr/local/redis-5.0.5/bin/redis-cli shutdown

5.运行测试

# 安装 tcl
sudo apt-get install tcl -y
# 运行测试
/usr/local/redis-5.0.5
make test

我在测试过程中发生了报错:*** [err]: Active defrag in tests/unit/memefficiency.tcl defrag didn’t stop.
解决:https://blog.csdn.net/weixin_40747106/article/details/80414772

然后重新运行make test,成功。

6.查看Redis

# 查看Redis
ps -ef | grep redis
# 通过端口号检查 Redis 服务器状态:
netstat -nlt| grep 6379

二、数据类型

传统的 key-value 是指支持使用一个 key 字符串来索引 value 字符串的存储,而 Redis 中,value 不仅仅支持字符串,还支持更多的复杂结构,包括列表、集合、哈希表等。

1.Redis strings

字符串类型的值最多能存储 512M 字节的内容。

  • set & get
# 将变量stringName的值设置为stringValue
set stringName stringValue
# 后面带一个nx参数,表示set 命令只有在没有相同 key 的情况下成功
set stringName stringValue nx
# 后面带一个xx参数,表示set 命令在有相同 key 值的情况下成功;如果后面不带xx或nx参数,默认将为这种效果
set stringName stringValue xx

示例:

root@instance-06frzma5:~# redis-cli
127.0.0.1:6379> set stringTest value0
OK
127.0.0.1:6379> get stringTest
"value0"
127.0.0.1:6379> set stringTest value1 nx
(nil)
127.0.0.1:6379> get stringTest
"value0"
127.0.0.1:6379> set stringTest value1 xx
OK
127.0.0.1:6379> get stringTest
"value1"
127.0.0.1:6379> 

  • incr & incrby & decr & decrby
# stringName +1
incr stringName
# stringName +100
incr stringName 100
# stringName -1
decr stringName
# stringName -100
decrby stringName 100

示例:

127.0.0.1:6379> set index 0
OK
127.0.0.1:6379> incr index
(integer) 1
127.0.0.1:6379> incrby index 100
(integer) 101
127.0.0.1:6379> decr index
(integer) 100
127.0.0.1:6379> decrby index 20
(integer) 80
127.0.0.1:6379> 
  • mset & mget

运用 mset 和 mget 命令可以一次性完成多个 key-value 的对应关系;使用 mget 命令,Redis 返回一个 value 数组。

127.0.0.1:6379> mset a 1 b hello c 2.0
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "hello"
3) "2.0"

2.Redis Lists

Redis Lists是简单的字符串列表。

  • lpush & rpush & lrange
# 向listName列表中从左边插入一个或多个元素
lpush listName 1 2 three four 5
# 查看列表中指定范围的元素,第一个数字0表示开始位置,第二个数字4表示结束位置;两个参数都可以为负数,表示倒数第几个元素
lrange listName 0 4
# 向listName列表中从右边插入一个或多个元素
rpush listName1 1 2 3 4 5

示例:

127.0.0.1:6379> lpush listName 1 2 three four 5
(integer) 5
127.0.0.1:6379> lrange listName 0 4
1) "5"
2) "four"
3) "three"
4) "2"
5) "1"
127.0.0.1:6379> rpush listName1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange listName1 0 4
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> lrange listName1 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

  • del & lpop & rpop

del表示清空列表,lpop表示从左边弹出一个元素,rpop表示从右边弹出一个元素。

127.0.0.1:6379> rpush list 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lpop list
"1"
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> rpop list
"5"
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> del list
(integer) 1
127.0.0.1:6379> lrange list 0 -1
(empty list or set)

一个列表最多可以包含 4294967295(2 的 32 次方减一)个元素,这意味着它可以容纳海量的信息,最终瓶颈一般都取决于服务器内存大小。

  • 阻塞式访问brpop & blpop

Redis 提供了阻塞式访问 brpop 和 blpop 命令。用户可以在获取数据不存在时阻塞请求队列,如果在时限内获得数据则立即返回,如果超时还没有数据则返回 nil。

# 从左边弹出一个元素,若获取不到则等待times秒
blpop listName times
# 从右边弹出一个元素,若获取不到则等待times秒
brpop listName times
  • llen
# 查看listName列表的长度(元素个数)
llen listName

3.Redis Hashes

哈希主要用来表示对象,它们有能力存储很多对象。

  • hmset & hget & hgetall & hmget
# 创建一个对象objName,att1、att2、att3表示它的三个属性,val1、val2、val3表示对应的属性值
hmset objName att1 val1 att2 val2 att3 val3
# 获取指定属性的值域
hget objName att1
# 获取对象的所有属性和对应的值域
hgetall objName
# 获取多个属性的值域
hmget objName att1 att2

示例:

127.0.0.1:6379> hmset student name tracy gender male
OK
127.0.0.1:6379> hgetall student
1) "name"
2) "tracy"
3) "gender"
4) "male"
127.0.0.1:6379> hget student name
"tracy"
127.0.0.1:6379> hget student gender
"male"
127.0.0.1:6379> hmget student name gender
1) "tracy"
2) "male"
  • 对对象的属性进行加减操作hincrby
127.0.0.1:6379> hmset student name tracy gender male age 18
OK
127.0.0.1:6379> hgetall student
1) "name"
2) "tracy"
3) "gender"
4) "male"
5) "age"
6) "18"
127.0.0.1:6379> hincrby student age 1
(integer) 19
127.0.0.1:6379> hincrby student age -1
(integer) 18

4.Redis Set无序集合

Redis Set是一个无序的字符串集合,其中不会出现重复的元素。

  • sadd & smembers
# 添加元素
sadd setName item1 item2 item3
# 查看所有元素
smembers setName

示例:

127.0.0.1:6379> sadd setName 1 2 null
(integer) 3
127.0.0.1:6379> smembers setName
1) "null"
2) "1"
3) "2"

  • 查看元素是否存在sismember
127.0.0.1:6379> sismember setName 3
(integer) 0
127.0.0.1:6379> sismember setName 1
(integer) 1

匹配成功返回 1,匹配失败返回 0。

5.Redis sorted Set有序集合

有序集合的每一个成员都关联了一个权值,这个权值被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是权值可以是重复的。

  • zadd
# 往无序列表setName中添加一个元素item,score是一个参数(类型必须为小数或整数),用来作为排序依据。
zadd setName score item

示例:

127.0.0.1:6379> zadd setName 1 "wang"
(integer) 1
127.0.0.1:6379> zadd setName 2 "tuantuan"
(integer) 1
127.0.0.1:6379> zadd setName 3 "tuotuo"
(integer) 1
127.0.0.1:6379> zadd setName 0.2 "miao"
(integer) 1
  • zrange & zrevrange

一个是正序排序,一个是逆序排序。后面可以加一个withscores参数,会显示分数。

127.0.0.1:6379> zrange setName 0 -1
1) "miao"
2) "wang"
3) "tuantuan"
4) "tuotuo"
127.0.0.1:6379> zrevrange setName 0 -1
1) "tuotuo"
2) "tuantuan"
3) "wang"
4) "miao"
127.0.0.1:6379> zrevrange setName 0 -1 withscores
1) "tuotuo"
2) "3"
3) "tuantuan"
4) "2"
5) "wang"
6) "1"
7) "miao"
8) "0.20000000000000001"
127.0.0.1:6379> zrange setName 0 -1 withscores
1) "miao"
2) "0.20000000000000001"
3) "wang"
4) "1"
5) "tuantuan"
6) "2"
7) "tuotuo"
8) "3"

三、系统管理

1.常用key相关的命令

exists key:判断一个 key 是否存在,存在返回 1,否则返回 0。
del key:删除某个 key,或是一系列 key,比如:del key1 key2 key3 key4。成功返回 1,失败返回 0(key 值不存在)。
type key:返回某个 key 元素的数据类型(none:不存在,string:字符,list:列表,set:元组,zset:有序集合,hash:哈希),key 不存在返回空。
keys key—pattern:返回匹配的 key 列表,比如:keys foo* 表示查找 foo 开头的 keys。
randomkey:随机获得一个已经存在的 key,如果当前数据库为空,则返回空字符串。
clear:清除界面。
rename oldname newname:更改 key 的名字,新键如果存在将被覆盖。 
renamenx oldname newname:更改 key 的名字,新键如果存在则更新失败。
dbsize:返回当前数据库的 key 的总数。

2.时间相关命令

  • expire:设置某个 key 的过期时间(秒)
# 可以在创建key之后设置过期时间
expire keyName 5
# 也可以在创建key的同时设置过期时间
set keyName hello ex 5
  • ttl:查找某个 key 还有多长时间过期(秒)
127.0.0.1:6379> set str hello ex 100
OK
127.0.0.1:6379> ttl str
(integer) 78
  • 清空key

flushdb:清空当前数据库中的所有键。 flushall:清空所有数据库中的所有键。

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> set obj hello11
OK
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> flushall
OK

3.设置相关命令CONFIG GET & CONFIG SET

  • 密码相关
config get:用来读取运行 Redis 服务器的配置参数。 
config set:用于更改运行 Redis 服务器的配置参数。 
auth:认证密码。

刚开始时 Reids 并未设置密码,密码查询结果为空。
然后设置密码为 test111,再次查询报错。
经过 auth 命令认证后,可正常查询。

127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass test111
OK
127.0.0.1:6379> config get requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth test111
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test111"
  • 查询数据类型的最大条目
config get *max-*-entries*
127.0.0.1:6379> config get *max-*-entries*
1) "hash-max-ziplist-entries"
2) "512"
3) "set-max-intset-entries"
4) "512"
5) "zset-max-ziplist-entries"
6) "128"
  • 重置报告

config resetstat:重置数据统计报告,通常返回值为“OK”。

4.查询信息

info 命令可以查询 Redis 几乎所有的信息,其命令选项有如下:

server: Redis server 的常规信息
clients: Client 的连接选项
memory: 存储占用相关信息
persistence: RDB and AOF 相关信息
stats: 常规统计
replication: Master/Slave 请求信息
cpu: CPU 占用信息统计
cluster: Redis 集群信息
keyspace: 数据库信息统计
all: 返回所有信息
default: 返回常规设置信息

5.密码设置

本章第3节已经介绍了一种设置密码的方式,现在介绍另一种通过修改配置文件来设置密码的方式。

  • 设置密码的方式:
# 方式一:在redis-cli窗口中使用config set requirepass 密码内容
# 方式二:修改配置文件
# step1
grep -n requirepass /usr/local/redis-5.0.5/redis.conf
# step2
vim /usr/local/redis-5.0.5/redis.conf
# step3
把requirepass配置后面的密码内容修改为test111
# step4
在redis-server窗口按ctrl+C退出服务器,然后重新启动
  • 密码登录的方式:
# 方式一:在redis-cli窗口中使用auth 密码内容
# 方式二:在启动客户端时登录
# 启动客户端时登录
redis-cli -a test111

你可能感兴趣的:(后端体系,redis,数据库,缓存)