Redis 数据类型常用命令

Redis 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs 等数据类型。内置复制、Lua 脚本、LRU 收回、事务以及不同级别磁盘持久化功能,同时通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。

在这里插入图片描述

docker 安装 redis

# 拉取 redis 镜像
docker pull redis
# 创建并运行 redis 容器
docker run -it --name redis_6379 -p 6379:6379 -d redis
# 进入容器
docker exec -it redis_6379 bash
# 连接 redis 客户端
redis-cli
# 测试 redis,输入 ping,返回 PONG 即代表成功 
ping

压力测试

Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。我们可以通过这个工具来进行简单的压测。

可选参数如下:

序号选项描述默认值
1-h指定服务器主机名127.0.0.1
2-p指定服务器端口6379
3-s指定服务器 socket
4-c指定并发连接数50
5-n指定请求数10000
6-d以字节的形式指定 SET/GET 值的数据大小2
7-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 \ 请求1
10-q强制退出 redis。仅显示 query/sec 值
11–csv以 CSV 格式输出
12-l(L 的小写字母) 生成循环,永久执行测试
13-t仅运行以逗号分隔的测试命令列表。
14-I(i 的大写字母) Idle 模式。仅打开 N 个 idle 连接并等待。

示例:

redis-benchmark -c 100 -n 10000 -t set,get -P 60 -q

数据类型

Redis 支持 5 种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sorted set:有序集合)。

String (字符串)

String 是 Redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

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

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

下面是一些 String 相关的常用命令:

序列命令描述示例
1set key value设置指定 key 的值,如果 key 不存在就自动创建 (值得类型会自动转换)set myKey Hello
2get key 获取指定 key 的值,不存在返回 nil(null)get myKey
3mget key1 key2…获取一个或多个给定 key 的值mget name age
4strlen key返回 key 中存储字符串的长度strlen myKey
5incr key将 key 中存储的数字增 1incr money
6decr key将 key 中存储的数字减 1decr money
7setnx key value只有当 key 不存在时设置 key 的值(可以检测 key 是否存在,不存在返回 1,存在返回 0)setnx lock 任意值

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 String 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

下面是一些 Hash 相关的常用命令:

序列命令描述示例
1hdel key field1 field2…删除一个或多个哈希表字段hdel hs bmw
2hexists key field查看哈希表 key 中,指定的字段是否存在hexists hs bmw
3hget key field获取存储在哈希表中指定字段的值hget hs bmw
4hgetall key获取在哈希表中指定 key 的所有字段和值hgetall hs
5hincrby key field increment为哈希表 key 中的指定字段的整数值加上增量 incrementhincrby hs bmw 10
6hkeys key获取所有哈希表中的字段(field)hkeys hs
7hlen key获取哈希表中字段的数量hkeys hs
8hmget key field1 field2获取所有给定字段的值hmget hs audi bmw
9hset key field value将哈希表 key 中的字段 field 的值设为 value 。hset hs bmw 100 audi 80
10hsetnx key field value只有在字段 field 不存在时,设置哈希表字段的值。hsetnx hs bmw 100
11hvals key获取哈希表中所有值hvals hs

List(列表)

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

下面是一些 List 相关的常用命令:

序列命令描述示例
1llen key获取列表长度llen list_1
2lpush key value1… value2将一个或多个值插入到列表头部lpush list_1 3 2 1
3lpop key移出并获取列表的第一个元素lpop list_1
4lrange key start stop获取列表指定范围内的元素lrange list_1 0 3
5lrem key count value移除列表元素lrem list_1 0 1
6rpush key value1… value2尾部添加rpush list_1 4 5 6
7rpop key [count]尾部移除 count 数量的元素rpop list_1 2

lrem key count value 命令中 count 的使用,官方说明如下:
在这里插入图片描述

Set(集合)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

序列命令描述示例
1sadd key member1 member2… 向集合添加一个或多个成员sadd nums 1 2 3
2scard key获取集合的成员数 scard nums
3smembers key返回集合中的所有成员smembers nums
4sismember key member判断member元素是否是集合key的成员sismember nums 4
5spop key移除并返回集合中的一个随机元素spop nums

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

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

序列命令描述示例
1zadd key score1 member1 score2 member2… 向有序集合添加一个或多个成员,或者更新已存在成员的值 zadd stu 100 zs 99 ls
2zcard key获取集合的成员数zcard stu
3zcount key min max计算在有序集合中指定区间值的成员数zcount stu 90 100
4zrangebyscore key min max[limit offset count]通过字典区间返回有序集合的成员zrangebyscore stu 90 100
5zrem key member1 member2移除有序集合中的一个或多个成员zrem stu zs ls
6zremrangebyscore key min max移除有序集合中给定的值区间的所有成员zremrangebyscore stu 90 100
7zscore key member返回有序集合中,成员的值zscore stu zs

上面列出了五种数据类型的常用命令,详细了解请查阅官方文档


感谢大家读到这里,后续还会有其他相关文章,欢迎继续阅读。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值