Redis-《Redis-简明教程》实验报告

2e22ce50f815a56eb874c48abcd85bcede7d5fae.jpg

Redis 简明教程 免费.jpg

字符串

  • set
1
2
3
4
#  格式
> set key value
# 例如
> set name Leo

set 适用于单个 key-value 的对应关系。

  • get
1
2
3
4
#  格式
> get key
# 例如
> get name

get 查询单个 key 的值。

  • 加减运算
1
2
3
4
5
6
7
8
#  自加+1
> incr height
# 自定义加
> incrby height 10
# 自减-1
> decr weight
# 自定义减
> decrby weight 10
  • mset
1
2
3
4
#  格式
> mset key [key ...]
# 例如
> mset name1 Leo name2 Raph

mset 适用于多个 key-value 的对应关系。

  • mget
1
2
3
4
#  格式
> mget key [key ...]
# 例如
> mset name1 name2

mget 查询多个 key 的值。

列表

  • lpush
1
2
3
4
#  格式
> lpush key element [element ...]
# 例如
> lpush list Leo Raph

lpush 添加一个或多个元素到列表的左边,或称为头部。

  • rpush
1
2
3
4
#  格式
> rpush key element [element ...]
# 例如
> rpush list Donnie Mikey

rpush 添加一个或多个元素到列表的右边,或称为尾部。

  • lrange
1
2
3
4
#  格式
> lrange key start stop
# 例如
> lrange list 0 -1

lrange 可以按索引查询列表,0 -1表示查询全部。

  • brpop
1
2
3
4
#  格式
> brpop key [key ...] timeout
# 例如
> brpop list 1

brpop 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  • blpop
1
2
3
4
#  格式
> blpop key [key ...] timeout
# 例如
> blpop list 1

blpop 移出并获取列表的头一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

哈希

  • hmset
1
2
3
4
#  格式
> hmset key field value [field value ...]
# 例如
> hmset id:1 nickname Leo weapon 双刀 height 170

hmset 设置一个多域的 hash 表。

  • hget
1
2
3
4
#  格式
> hget key field
# 例如
> hget id:1 nickname

hget 获取指定的单域。

  • hgetall
1
2
3
4
#  格式
> hgetall key
# 例如
> hget id:1

hgetall 命令获取指定 key 的所有信息。

  • hmget
1
2
3
4
#  格式
> hmget key field [field ...]
# 例如
> hmget id:1 nickname weapon

hmget 命令获取一个或多个指定字段的值。

  • hincrby
1
2
3
4
#  格式
> hincrby key field increment
# 例如
> hincrby id:1 height 10

hincrby 用于为哈希表中的字段值加上指定增量值。

集合

  • sadd
1
2
3
4
#  格式
> sadd key member [member ...]
# 例如
> sadd list Leo Raph Donnie Mikey

sadd 产生一个无序集合。

  • smembers
1
2
3
4
#  格式
> smembers key
# 例如
> smembers list

smembers 查看一个集合。

  • sismember
1
2
3
4
#  格式
> sismember key member
# 例如
> sismember list Leo

sismember 查看该元素是否是集合的成员。

  • zadd
1
2
3
4
#  格式
> zadd key [NX|XX] [CH] [INCR] score member [score member ...]
# 例如
> zadd list 1 Leo

zadd 产生一个有序集合。

  • zrange
1
2
3
4
#  格式
> zrange key start stop [WITHSCORES]
# 例如
> zrange list 0 -1

zrange 查看正序的集合。

  • zrevrange
1
2
3
4
#  格式
> zrevrange key start stop [WITHSCORES]
# 例如
> zrevrange list 0 -1 withscores

zrevrange 查看倒序的集合,使用 withscores 参数返回权重值。

常用命令

  • exists
1
2
3
4
#  格式
> exists key [key ...]
# 例如
> exists list

exists 判断一个 key 是否存在。

  • del
1
2
3
4
#  格式
> del key [key ...]
# 例如
> del list

del 删除一个或多个 key。

  • type
1
2
3
4
#  格式
> type key
# 例如
> type list

type 返回某个 key 的数据类型。

  • keys
1
2
3
4
#  格式
> keys pattern
# 例如
> keys l*

keys 返回匹配的 key 列表。

  • rename
1
2
3
4
#  格式
> rename key newkey
# 例如
> rename list team

rename 更改 key 的名称。

  • expire
1
2
3
4
#  格式
> expire key seconds
# 例如
> expire countdown 20

expire 设置某个 key 的过期时间。

  • ttl
1
2
3
4
#  格式
> ttl key
# 例如
> ttl countdown

expire 查询 key 距过期剩余时间。

其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#  清除界面
> clear
# 查询 Redis 服务器的配置参数
> config get
# 修改 Redis 服务器的配置参数
> config get
# 重置数据统计报告
> config resetstat
# 查询当前数据库的 key 的总数
> dbsize
# 清空当前数据库中的所有 key(慎用)
> flushdb
# 清空所有数据库中的所有 key(慎用)
> flushall
> 查询 Redis 服务器相关信息
> info
# 随机获得一个已经存在的 key
> randomkey

设置密码

  • 方式一(使用命令设置)
1
2
3
4
#  格式
> config set requirepass password
# 例如
> config set requirepass 123456
  • 方式二(配置 redis.conf)
1
2
3
#  requirepass foobared
修改为
requirepass 123456

密码认证

  • 方式一(登录时认证)
1
2
3
4
#  格式
$ redis-cli -a password
# 例如
$ redis-cli -a 123456
  • 方式一(登录后认证)
1
2
3
4
#  格式
> auth password
# 例如
> auth 123456

事务处理

1
2
3
4
5
6
7
8
9
10
#  格式
> multi
> ...
> ...
> exec
# 例如
> multi
> mset name1 Leo name2 Raph
> mset name3 Donnie name4 Mikey
> exec

持久化机制

  • snapshotting(快照)

将数据存放到文件中,默认方式。 是将内存中的数据以快照的方式写入到二进制文件中,默认文件 dump.rdb,可以通过配置设置自动做快照持久化的方式。可配置 Redis 在 n 秒内如果超过 m 个 key 被修改就自动保存快照。比如: save 900 1:900 秒内如果超过 1 个 key 被修改,则发起快照保存。 save 300 10:300 秒内如果超过 10 个 key 被修改,则快照保存。

  • Append-only file(AOF)

将读写操作存放到文件中。

  • redis.conf 配置参数
1
2
3
4
5
6
7
8
# 启用 AOF 持久化方式
appendonly yes
# 收到写命令就立即写入磁盘,最慢,但是保证了数据的完整持久化
appendfsync always
# 每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
appendfsync everysec
# 完全依赖 os,性能最好,持久化没有保证
appendfsync no
  • 将数据写入磁盘中
1
2
3
4
5
6
7
> help
SAVE -
summary: Synchronously save the dataset to disk
since: 1.0.0
group: server
> save
OK
-------------本文结束感谢您的阅读-------------
0%