超详细的Redis入门教程!!!

第一章 Redis的介绍

Redis(REmote DIctionary Server 远程字典服务器),是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一, 也被人们称为数据结构服务器。

**NoSQL(Not Only SQL)**即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。
NoSQL适用于:
High performance - 数据的高并发读写
Huge Storage - 海量数据的高效率存储和访问
High Scalability & High Availability - 数据库的高扩展和高可用

Redis是一个开源的高性能键值对(Key-Value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

  • 字符串类型
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型

第二章 Redis的安装部署

这里进行源码安装

#下载源码包
wget https://download.redis.io/redis-stable.tar.gz
#解压到目录下
tar -xzf redis-stable.tar.gz -C /usr/local/
#安装编译工具
yum install gcc-c++ make -y
#进入安装目录
cd /usr/local/redis-stable
#编译安装
make && make install
#复制配置文件到/etc目录
cp /usr/local/redis-stable/redis。conf /etc
#前台启动---启动后按Ctrl+c停止
redis-server

在这里插入图片描述
后台启动

#修改配置文件
vim /etc/redis.conf
#将一下字段修改为yes
daemonize no
#后台启动
redis-server /etc/redis.conf
#连接
redis-cli -p 6379
#测试
127.0.0.1:6379> ping
PONG
#关闭
127.0.0.1:6379> shutdown

常用命令

  1. redis-server:它是 redis 的服务端启动脚本
  2. redis-cli:它是 redis 提供的客户端启动脚本
  3. redis-sentinel:它是 redis 提供的哨兵启动脚本
  4. redis-benchmark:性能测试工具,可以在自己电脑上运行来查看性能
  5. redis-check-aof:修复有问题的AOF文件
  6. redis-check-dump:修复有问题的dump.rdb文件

第三章 数据类型

3.1 key操作

创建key:

#SET key value [NX(key不存在的时候设置,存在了就不设置了) | XX(只有key存在的时候才能设置)] 
#[GET(设置新值的时候输出旧值)] [EX seconds(过期时间/秒) | PX milliseconds(指定过期时间/毫秒) |
#EXAT unix-time-seconds(指定过期时间,时间戳/秒) | PXAT unix-time-milliseconds(指定过期时间,时间戳,毫秒) | KEEPTTL(保留与密钥相关联的生存时间)]
127.0.0.1:6379> set mykey myvalue
OK
  1. DEL key删除key:
127.0.0.1:6379> del mykey
(integer) 1
  1. EXISTS key检查给定 key 是否存在,存在返回1,否则返回0:
127.0.0.1:6379> EXISTS mykey
(integer) 0
127.0.0.1:6379> EXISTS mykey2
(integer) 1
  1. DUMP key序列化给定 key ,并返回被序列化的值
127.0.0.1:6379> dump mykey2
"\x00\xc1\xc8\x00\n\x00\xed\xe8\xfdk\"\x12\x8c\a"
  1. EXPIRE key seconds 为给定 key 设置过期时间,以秒计
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> expireat mykey2 5
(integer) 1
127.0.0.1:6379> dbsize
(integer) 0

  1. EXPIREAT key timestamp 设置键的过期时间(以UNIX时间戳为单位)
127.0.0.1:6379> EXPIREAT k1 1692205535
(integer) 1
127.0.0.1:6379> get k1
(nil)

  1. PEXPIRE key milliseconds:设置键的过期时间(以毫秒为单位)
127.0.0.1:6379> PEXPIRE k3 6000
(integer) 1
127.0.0.1:6379> get k3
"v3"
127.0.0.1:6379> get k3
(nil)
  1. PEXPIREAT key milliseconds-timestamp:设置键的过期时间(以毫秒的UNIX时间戳为单位)
127.0.0.1:6379> PEXPIREAT k4 1692206460000
(integer) 1
127.0.0.1:6379> get k4
"v4"
127.0.0.1:6379> get k4
(nil)
  1. KEYS pattern:查找匹配给定模式的键
127.0.0.1:6379> keys k*
1) "k5"
  1. MOVE key db:将键移动到不同的数据库
  2. SELECT db:选择指定的数据库
127.0.0.1:6379[2]> get k5
"v5"
127.0.0.1:6379[2]> move k5 5
(integer) 1
127.0.0.1:6379[2]> select 5
OK
127.0.0.1:6379[5]> get k5
"v5"
  1. PERSIST key:移除键的过期时间,使其持久化。
  2. PTTL key:获取键的剩余生存时间(以毫秒为单位)
  3. TTL key:获取键的剩余生存时间(以秒为单位)
127.0.0.1:6379[5]> EXPIRE k5 120
(integer) 1
127.0.0.1:6379[5]> PTTL k5
(integer) 105366
127.0.0.1:6379[5]> TTL k5
(integer) 98
127.0.0.1:6379[5]> TTL k5
(integer) 94
127.0.0.1:6379[5]> PERSIST k5
(integer) 1
127.0.0.1:6379[5]> TTL k5
(integer) -1
127.0.0.1:6379[5]> PTTL k5
(integer) -1
  1. RANDOMKEY:随机返回一个键
127.0.0.1:6379[2]> RANDOMKEY 
"k4"
  1. RENAME key newkey:重命名键
127.0.0.1:6379[2]> RENAME k4 newk4
OK
127.0.0.1:6379[2]> get k4
(nil)
127.0.0.1:6379[2]> get newk4
"v4"
  1. RENAMENX key newkey:重命名键,如果新键名不存在
127.0.0.1:6379[2]> get newk4
"v4"
127.0.0.1:6379[2]> RENAMENX k5 newk4
(integer) 0
127.0.0.1:6379[2]> RENAMENX k5 newk5
(integer) 1
  1. SCAN cursor [MATCH pattern] [COUNT count]:迭代遍历键空间
127.0.0.1:6379[2]> scan 0 match k* count 5
1) "9"
2) 1) "k2"
   2) "k9"
   3) "k0"
   4) "k8"
  1. TYPE key:返回键的数据类型
127.0.0.1:6379[2]> TYPE k1
string
  1. DBSIZE:获取当前数据库中键的数量
  2. FLUSHDB:清空当前数据库的所有键
127.0.0.1:6379[2]> dbsize
(integer) 10
127.0.0.1:6379[2]> flushdb
OK
127.0.0.1:6379[2]> dbsize
(integer) 0
  1. FLUSHALL:清空所有数据库的所有键
127.0.0.1:6379[2]> flushall
OK
127.0.0.1:6379[2]> select 5
OK
127.0.0.1:6379[5]> dbsize
(integer) 0
  1. ECHO:回显输入的字符串
127.0.0.1:6379[5]> echo redis
"redis"

3.2 String字符串

  1. SET key value:将键设置为指定的字符串值
127.0.0.1:6379> set k1 v1
OK
  1. GET key:获取存储在键中的值
127.0.0.1:6379> set k1 v1
OK
  1. GETRANGE key start end:返回 key 中字符串值的子字符,end=-1时表示全部
127.0.0.1:6379> set k3 "123456789"
127.0.0.1:6379> GETRANGE k3 0 3
"1234"
  1. SETBIT key offset value:设置或清除存储在键的字符串值上的偏移处的位
#1的ASCII码为00110001,!的ASCII码为00100001
127.0.0.1:6379> SETBIT k3 3 0
(integer) 1
127.0.0.1:6379> GETRANGE k3 0 3
"!234"
127.0.0.1:6379> SETBIT k3 3 1
(integer) 0
127.0.0.1:6379> GETRANGE k3 0 3
"1234"
  1. GETBIT key offset:获取存储在键的字符串值上指定偏移处的位
127.0.0.1:6379> GETBIT k3 0
(integer) 0
127.0.0.1:6379> GETBIT k3 2
(integer) 1
  1. MSET key value [key value …]:设置多个键值对
  2. MGET key1 [key2…]:获取多个键的值
127.0.0.1:6379> MSET k4 v4 k5 v5 k6 v6
OK
127.0.0.1:6379> MGET k4 k5 k6
1) "v4"
2) "v5"
3) "v6"
  1. GETSET key value:设置键的值并返回旧的值
127.0.0.1:6379> GETSET k4 123
"v4"
  1. SETEX key seconds value:设置键的值和生存时间(以秒为单位)
127.0.0.1:6379> SETEX k7 10 123
OK
127.0.0.1:6379> get k7
"123"
127.0.0.1:6379> get k7
(nil)
  1. SETNX key value:如果键不存在,则设置键的值
127.0.0.1:6379> SETNX k5 456
(integer) 0
127.0.0.1:6379> get k5
"v5"
127.0.0.1:6379> SETNX k10 10
(integer) 1
127.0.0.1:6379> get k10
"10"
  1. SETRANGE key offset value:在键的字符串值上覆盖部分字符串
127.0.0.1:6379> get k3
"123456789"
127.0.0.1:6379> SETRANGE k3 5 666
(integer) 9
127.0.0.1:6379> get k3
"123456669"

  1. STRLEN key:获取存储在键的字符串值的长度
127.0.0.1:6379> STRLEN k3
(integer) 9
  1. MSETNX key value [key value …]:设置多个键值对,如果所有键都不存在
127.0.0.1:6379> MSETNX k3 v3 k4 v4 k11 v11
(integer) 0
127.0.0.1:6379> get k11
(nil)
127.0.0.1:6379> MSETNX k11 v11 k12 v12
(integer) 1
127.0.0.1:6379> MGET k11 k12
1) "v11"
2) "v12"
  1. PSETEX key milliseconds value:设置键的值和生存时间(以毫秒为单位)
127.0.0.1:6379> PSETEX k11 10000 v11
OK
127.0.0.1:6379> ttl k11
(integer) 8
127.0.0.1:6379> ttl k11
(integer) 2
127.0.0.1:6379> get k11
(nil)
  1. INCR key:将存储在键中的值递增1
127.0.0.1:6379> set k8 15
OK
127.0.0.1:6379> INCR k8
(integer) 16
  1. INCRBY key increment:将存储在键中的值递增指定的增量
127.0.0.1:6379> INCRBY k8 100
(integer) 116
  1. INCRBYFLOAT key increment:将存储在键中的值递增指定的浮点增量
127.0.0.1:6379> INCRBYFLOAT k8 1.77
"117.77"
  1. DECR key:将存储在键中的值递减1
127.0.0.1:6379> DECR k8 
(error) ERR value is not an integer or out of range
127.0.0.1:6379> INCRBYFLOAT k8 0.23
"118"
127.0.0.1:6379> DECR k8 
(integer) 117
  1. DECRBY key decrement:将存储在键中的值递减指定的减量
127.0.0.1:6379> DECRBY k8 17
(integer) 100
  1. APPEND key value:将值追加到存储在键中的字符串值的末尾
127.0.0.1:6379> APPEND k1 'www'
(integer) 5
127.0.0.1:6379> get k1
"v1www"

3.3 List列表

  1. LPUSH key value1 [value2]:将一个或多个值插入到列表的头部
127.0.0.1:6379> LPUSH L1 1 2 3
(integer) 3
  1. LPOP key:移除并返回列表头部的元素
127.0.0.1:6379> LPOP L1
"3"
127.0.0.1:6379> LRANGE L1 0  -1
1) "2"
2) "1"
  1. LRANGE key start stop:获取列表中指定范围的元素
#正向下标从左到右;负向的下标从右到左
127.0.0.1:6379> LRANGE L1 0  -1
1) "3"
2) "2"
3) "1"
  1. LPUSHX key value:仅当列表存在时,在列表头部插入一个值
127.0.0.1:6379> LPUSHX L1 3
(integer) 3
127.0.0.1:6379> LRANGE L1 0  -1
1) "3"
2) "2"
3) "1"
  1. RPUSH key value1 [value2]:将一个或多个值插入到列表的尾部
127.0.0.1:6379> RPUSH L2 4 5 6
(integer) 3
127.0.0.1:6379> LRANGE L2 0  -1
1) "4"
2) "5"
3) "6"
  1. RPOP key:移除并返回列表尾部的元素
127.0.0.1:6379> RPOP L1 
"1"
127.0.0.1:6379> LRANGE L1 0  -1
1) "3"
2) "2"
  1. RPUSHX key value:仅当列表存在时,在列表尾部插入一个值
127.0.0.1:6379> RPUSHX L1 z
(integer) 3
127.0.0.1:6379> LRANGE L1 0  -1
1) "3"
2) "2"
3) "z"
  1. LLEN key:获取列表的长度
127.0.0.1:6379> LLEN L1
(integer) 3
  1. LINSERT key BEFORE|AFTER pivot value:在列表中指定元素的前或后插入一个新元素
127.0.0.1:6379> LINSERT L2 before 4 666
(integer) 4
127.0.0.1:6379> LRANGE L2 0  -1
1) "666"
2) "4"
3) "5"
4) "6"
127.0.0.1:6379> LINSERT L2 after  4 777
(integer) 5
127.0.0.1:6379> LRANGE L2 0  -1
1) "666"
2) "4"
3) "777"
4) "5"
5) "6"
  1. LINDEX key index:获取列表中指定索引位置的元素
127.0.0.1:6379> LINDEX L2 0
"666"
  1. LSET key index value:设置列表中指定索引位置的元素的值
127.0.0.1:6379> LSET L2 0 new666
OK
127.0.0.1:6379> LRANGE L2 0  -1
1) "new666"
2) "4"
3) "777"
4) "5"
5) "6"
  1. LREM key count value:从列表中删除指定数量的匹配元素
127.0.0.1:6379> LPUSH l3 1 2 3 3 3 4 5 6
(integer) 8
127.0.0.1:6379> LREM l3 2 3
(integer) 2
127.0.0.1:6379> LRANGE l3 0  -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
  1. LTRIM key start stop:修剪列表,只保留指定范围内的元素
127.0.0.1:6379> LTRIM l3 0 3
OK
127.0.0.1:6379> LRANGE l3 0  -1
1) "6"
2) "5"
3) "4"
4) "3"
  1. BLPOP key1 [key2 ] timeout:阻塞式地移除并返回列表头部的元素,如果列表为空,则等待一定时间
127.0.0.1:6379> BLPOP l3 0
1) "l3"
2) "5"
(8.45s)
  1. BRPOP key1 [key2 ] timeout:阻塞式地移除并返回列表尾部的元素,如果列表为空,则等待一定时间
127.0.0.1:6379> BRPOP l3 0
1) "l3"
2) "4"
127.0.0.1:6379> BRPOP l3 0
1) "l3"
2) "4"
(8.01s)
127.0.0.1:6379> BRPOP l3 5
(nil)
(5.02s)
  1. BRPOPLPUSH source destination timeout:从一个列表弹出元素并将其推到另一个列表,如果源列表为空,则等待一定时间
127.0.0.1:6379> BRPOPLPUSH l3 l4 0
"1"
(6.27s)
  1. RPOPLPUSH source destination:从一个列表尾部弹出元素并将其推到另一个列表的头部
127.0.0.1:6379> LPUSH slist 1 2 3
(integer) 3
127.0.0.1:6379> RPOPLPUSH slist dlist
"1"
127.0.0.1:6379> LRANGE dlist 0 -1
1) "1"

3.4 Set集合

  1. SADD key member1 [member2]:将一个或多个成员添加到集合中
  2. SMEMBERS key返回集合中的所有成员
  3. SCARD key | 获取集合的成员数
127.0.0.1:6379> SADD s1 1 2 3 4 4 4 4 5 6
(integer) 6
127.0.0.1:6379> SMEMBERS s1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> SCARD s1
(integer) 6
  1. SRANDMEMBER key [count] 返回集合中一个或多个随机数
127.0.0.1:6379> SRANDMEMBER s1 1
1) "3"
127.0.0.1:6379> SRANDMEMBER s1 3
1) "5"
2) "6"
3) "3"
  1. SISMEMBER key member判断 member 元素是否是集合 key 的成员
#0表示否 1表示是
127.0.0.1:6379> SISMEMBER s1 10
(integer) 0
127.0.0.1:6379> SISMEMBER s1 2
(integer) 1
  1. SREM key member1 [member2]移除集合中一个或多个成员
127.0.0.1:6379> SREM s1  2 3 4
(integer) 3
127.0.0.1:6379> SMEMBERS s1
1) "1"
2) "5"
3) "6"
  1. SDIFF key1 [key2]返回给定所有集合的差集
127.0.0.1:6379> SMEMBERS s1
1) "1"
2) "3"
3) "4"
4) "5"
5) "6"
127.0.0.1:6379> SADD s2 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SMEMBERS s2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SDIFF s1 s2
1) "6"
  1. SDIFFSTORE destination key1 [key2]返回给定所有集合的差集并存储在 destination 中
127.0.0.1:6379> SDIFFSTORE s3 s1 s2
(integer) 1
127.0.0.1:6379> SMEMBERS s3
1) "6"
  1. SINTER key1 [key2]返回给定所有集合的交集
127.0.0.1:6379> SINTER s1 s2
1) "1"
2) "3"
3) "4"
4) "5"
  1. SINTERSTORE destination key1 [key2]返回给定所有集合的交集并存储在 destination 中
127.0.0.1:6379> SINTERSTORE s4 s1 s2
(integer) 4
127.0.0.1:6379> SMEMBERS s4
1) "1"
2) "3"
3) "4"
4) "5"
  1. SUNION key1 [key2]返回所有给定集合的并集
127.0.0.1:6379> SUNION s1 s2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
  1. SUNIONSTORE destination key1 [key2]所有给定集合的并集存储在 destination 集合中
127.0.0.1:6379> SUNIONSTORE s5 s1 s2
(integer) 6
127.0.0.1:6379> SMEMBERS s5
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
  1. SMOVE source destination member将 member 元素从 source 集合移动到 destination 集合
127.0.0.1:6379> SMOVE s5 s6 3
(integer) 1
127.0.0.1:6379> SMEMBERS s6
1) "3"
127.0.0.1:6379> SMEMBERS s5
1) "1"
2) "2"
3) "4"
4) "5"
5) "6"
  1. SPOP key移除并返回集合中的一个随机元素
127.0.0.1:6379> SPOP s5 2
1) "5"
2) "4"
127.0.0.1:6379> SMEMBERS s5
1) "1"
2) "2"
3) "6"
  1. SSCAN key cursor [MATCH pattern] [COUNT count]迭代集合中的元素
127.0.0.1:6379> SSCAN s1 0 match b* count 2
1) "0"
2) 1) "banaer"
   2) "berry"
   3) "blueberry"

3.5 Zset有序集合

  1. ZADD key score1 member1 [score2 member2] 将一个或多个带有分数的成员添加到有序集合中。
  2. ZCARD key 获取有序集合的成员数量。
127.0.0.1:6379[1]> ZADD myzset 90 "Alice" 85 "Bob" 78 "Charlie"
(integer) 3
127.0.0.1:6379[1]> ZCARD myzset
(integer) 3
  1. ZCOUNT key min max 获取有序集合中分数在指定范围内的成员数量。
127.0.0.1:6379[1]> ZCOUNT myzset 80 90
(integer) 2
  1. ZINCRBY key increment member 将有序集合中成员的分数增加指定的增量。
127.0.0.1:6379[1]> ZINCRBY myzset 5 "Alice"
"95"
  1. ZLEXCOUNT key min max 获取有序集合中分数在字典序范围内的成员数量。
127.0.0.1:6379[1]> ZLEXCOUNT myzset [Alice [Charlie
(integer) 3
  1. ZRANGE key start stop [WITHSCORES] 获取有序集合中指定排名范围内的成员。
127.0.0.1:6379[1]> ZRANGE myzset 0 2 WITHSCORES
1) "Charlie"
2) "78"
3) "Bob"
4) "85"
5) "Alice"
6) "95"
  1. ZRANGEBYLEX key min max [LIMIT offset count] 获取有序集合中指定字典序范围内的成员。
127.0.0.1:6379[1]> ZRANGEBYLEX zs2 [lily [zhangsan
1) "zhangsan"
2) "lisi"
3) "tony"
4) "lily"
  1. ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 获取有序集合中指定分数范围内的成员。
127.0.0.1:6379[1]> ZRANGEBYSCORE myzset 80 90 WITHSCORES LIMIT 0 2
1) "Bob"
2) "85"
  1. ZRANK key member 获取有序集合中成员的排名(从低到高)。
127.0.0.1:6379[1]> ZRANK myzset "Alice"
(integer) 2
  1. ZREM key member [member …] 从有序集合中移除一个或多个成员。
127.0.0.1:6379[1]> ZREM myzset "Alice" "Bob"
(integer) 2
  1. ZREMRANGEBYLEX key min max 从有序集合中移除字典序范围内的成员。
127.0.0.1:6379[1]> ZREMRANGEBYLEX myzset [Alice [Charlie
(integer) 1
  1. ZREMRANGEBYRANK key start stop 从有序集合中移除指定排名范围内的成员。
127.0.0.1:6379[1]> ZREMRANGEBYRANK zs2  0 1
(integer) 2
  1. ZREMRANGEBYSCORE key min max 从有序集合中移除指定分数范围内的成员。
127.0.0.1:6379[1]> ZREMRANGEBYSCORE myzset 80 90
(integer) 2
  1. ZREVRANGE key start stop [WITHSCORES] 获取有序集合中指定排名范围内的成员,按分数从高到低排序。
127.0.0.1:6379[1]> ZREVRANGE myzset 0 2 WITHSCORES
1) "Charlie"
2) "78"
  1. ZREVRANGEBYSCORE key max min [WITHSCORES] 获取有序集合中指定分数范围内的成员,按分数从高到低排序。
127.0.0.1:6379[1]> ZREVRANGEBYSCORE zs2 90 80 WITHSCORES
1) "lisi"
2) "90"
3) "tony"
4) "80"
  1. ZREVRANK key member 获取有序集合中成员的排名(从高到低)。
127.0.0.1:6379[1]> ZREVRANK zs2  "tony"
(integer) 2
  1. ZSCORE key member 获取有序集合中成员的分数。
127.0.0.1:6379[1]> ZSCORE myzset "Alice"
"90"
  1. ZINTERSTORE destination numkeys key [key …] 计算并存储多个有序集合的交集到指定的目标有序集合。
127.0.0.1:6379[1]> ZINTERSTORE myresult 2 zs2 zs3 WEIGHTS 2 3
(integer) 1
  1. ZUNIONSTORE destination numkeys key [key …] 计算并存储多个有序集合的并集到指定的目标有序集合。
127.0.0.1:6379[1]> ZUNIONSTORE myresult 2 myzset1 zs2 AGGREGATE MAX
(integer) 4
  1. ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代遍历有序集合。
127.0.0.1:6379[1]> ZSCAN zs2 0 MATCH "l*" COUNT 10
1) "0"
2) 1) "lily"
   2) "70"
   3) "lisi"
   4) "90"

3.6 Hash哈希

  1. HSET key field value将哈希表 key 中的字段 field 设置为指定的值 value
127.0.0.1:6379> HSET myhash name zhangsan age 20 gender M
(integer) 3
  1. HGET key field获取哈希表 key 中字段 field 的值。
127.0.0.1:6379> HGET myhash name
"zhangsan"
  1. HGETALL key获取哈希表 key 中所有字段和值。
127.0.0.1:6379> HGETALL myhash
1) "name"
2) "zhangsan"
3) "age"
4) "20"
5) "gender"
6) "M"
  1. HEXISTS key field检查哈希表 key 中是否存在字段 field
127.0.0.1:6379> HEXISTS myhash name
(integer) 1
127.0.0.1:6379> HEXISTS myhash test
(integer) 0
  1. HSETNX key field value仅在哈希表 key 中字段 field 不存在时,设置字段的值为 value
127.0.0.1:6379> HSETNX myhash name lisi
(integer) 0
127.0.0.1:6379> HSETNX myhash birth 2002
(integer) 1
  1. HKEYS key 获取哈希表 key 中所有字段的列表
127.0.0.1:6379> HKEYS myhash
1) "name"
2) "age"
3) "gender"
4) "birth"
  1. HVALS key获取哈希表 key 中所有字段的值列表。
127.0.0.1:6379> HVALS myhash
1) "zhangsan"
2) "20"
3) "M"
4) "2002"
  1. HLEN key获取哈希表 key 中字段的数量。
127.0.0.1:6379> HLEN myhash
(integer) 4
  1. HMGET key field1 [field2] 获取哈希表 key 中一个或多个字段的值。
127.0.0.1:6379> HMGET myhash name age
1) "zhangsan"
2) "20"
  1. HMSET key field1 value1 [field2 value2] 设置哈希表 key 中多个字段的值。
127.0.0.1:6379> HMSET myhash age 20 sex M school xadx
OK
127.0.0.1:6379> HGETALL myhash
1) "name"
2) "zhangsan"
3) "age"
4) "20"
5) "sex"
6) "M"
7) "school"
8) "xadx"
  1. HINCRBY key field increment将哈希表 key 中字段 field 的值增加指定的整数 increment
127.0.0.1:6379> HINCRBY myhash age 10
(integer) 3
  1. HINCRBYFLOAT key field increment将哈希表 key 中字段 field 的值增加指定的浮点数 increment
127.0.0.1:6379> HINCRBYFLOAT myhash age 5.1
"35.1"
  1. HDEL key field1 [field2] 删除哈希表 key 中一个或多个字段。
127.0.0.1:6379> HDEL myhash gender
(integer) 1
127.0.0.1:6379> HDEL myhash age birth
(integer) 2
127.0.0.1:6379> HGETALL myhash
1) "name"
2) "zhangsan"
  1. HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表 key 中的字段。使用游标 cursor 进行遍历,可选地匹配 pattern 并指定每次迭代的数量 count
127.0.0.1:6379> HSCAN myhash 0 count 2
1) "0"
2) 1) "name"
   2) "zhangsan"
   3) "age"
   4) "20"
   5) "sex"
   6) "M"
   7) "school"
   8) "xadx"

3.7 Bitmaps位图

  1. SETBIT key offset value用于设置Bitmaps中某个偏移量的值(0或1),offset偏移量从0开始
  2. GETBIT key offset这个命令用于获取Bitmaps中某个偏移量的值
  3. BITCOUNT key [start end] 用于统计字符串从start字节到end字节比特值为1的数量
127.0.0.1:6379> SETBIT unique:users:20230819 1 1
(integer) 0
127.0.0.1:6379> SETBIT unique:users:20230819 6 1
(integer) 0
127.0.0.1:6379> SETBIT unique:users:20230819 11 1
(integer) 0
127.0.0.1:6379> SETBIT unique:users:20230819 15 1
(integer) 0
127.0.0.1:6379> SETBIT unique:users:20230819 19 1
(integer) 0
127.0.0.1:6379> GETBIT unique:users:20230819 19
(integer) 1
127.0.0.1:6379> GETBIT unique:users:20230819 18
(integer) 0
127.0.0.1:6379> GETBIT unique:users:20230819 15
(integer) 1
127.0.0.1:6379> GETBIT unique:users:20230819 2
(integer) 0
127.0.0.1:6379> BITCOUNT unique:users:20230819 
(integer) 5
  1. BITOP operation destkey key… 这个命令是一个复合操作, 它可以做多个Bitmaps的and(交集) 、 or(并集) 、 not(非) 、 xor(异或) 操作并将结果保存在destkey中
127.0.0.1:6379> BITOP and result eight ten
(integer) 1
127.0.0.1:6379> GETBIT result 3
(integer) 1
127.0.0.1:6379> BITOP and result eight ten
(integer) 1
127.0.0.1:6379> GETBIT result
(error) ERR wrong number of arguments for 'getbit' command
127.0.0.1:6379> GETBIT result 3
(integer) 1
127.0.0.1:6379> BITOP not result3 eight
(integer) 1
127.0.0.1:6379> GETBIT result3 3
(integer) 0
127.0.0.1:6379> GETBIT result3 0
(integer) 1
127.0.0.1:6379> BITOP xor result4 eight ten
(integer) 1
127.0.0.1:6379> GETBIT result4 1
(integer) 1
127.0.0.1:6379> GETBIT result4 0
(integer) 0
127.0.0.1:6379> GETBIT result4 2
(integer) 0

3.8 Hyperloglog

  1. PFADD key element [element …] 添加指定元素到 HyperLogLog 中
  2. PFCOUNT key [key …] 返回给定 HyperLogLog 的基数估算值
  3. PFMERGE destkey sourcekey [sourcekey …] 将多个HyperLogLog 合并为一个 HyperLogLog
127.0.0.1:6379> PFADD hylog 1 2 2 2 3 4 5 5 6 6 7
(integer) 1
127.0.0.1:6379> PFCOUNT hylog
(integer) 7
127.0.0.1:6379> PFADD hylog2 8 8 9 9 10 11 11 12 13 14
(integer) 1
127.0.0.1:6379> PFCOUNT hylog2
(integer) 7
127.0.0.1:6379> PFMERGE hylog3 hylog hylog2
OK
127.0.0.1:6379> PFCOUNT hylog3
(integer) 14

3.9 Geospatial

  1. geoadd key longitude latitude member [longitude latitude member…]添加地理位置(经度,纬度,名称)
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen 116.38 39.90 beijing
(integer) 3
  1. geopos key member [member…] 获得指定地区的坐标值
127.0.0.1:6379> geopos china:city shanghai
1) 1) "121.47000163793563843"
   2) "31.22999903975783553"
  1. geodist key member1 member2 [m|km|ft|mi] 获取两个位置之间的直线距离
127.0.0.1:6379> geodist china:city beijing shanghai km
"1068.1535"
  1. georadius key longitude latitude radius [m|km|ft|mi] 以给定的经纬度为中心,找出某一半径内的元素
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
2) "shenzhen"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值