敖胤

绳锯木断,水滴石穿;聚沙成塔,集腋成裘。

导航

Redis入门

一、安装

1.1、准备docker-compose.yml文件:

version: "3"
services:
  redis6.0:
    image: daocloud.io/library/redis:6.0.5-alpine3.12
    restart: always
    container_name: redis6.0
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6379:6379

1.2、执行docker-compose up -d安装:

二、连接

2.1、下载RDM

从GitHub上下载RedisDesktopManager-Windows,下载路径:

https://github.com/lework/RedisDesktopManager-Windows/releases/download/2021.5/rdm-2021.5.zip

2.1、安装RDM

傻瓜式安装

2.3、连接

三、Redis数据存储结构

常用的五种存储结构:

  • key-string:一个key对应一个值;最常用,用于管理redis字符串值。

  • key-hash:一个key对应一个map;是一个 string 类型的 field和 value的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对。

  • key-list:一个key对应一个列表(有序可重复);是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边);可用于实现栈和队列结构

  • key-set:一个key对应一个集合(无序不重复);Set是String类型的无序集合,成员是唯一的。用于进行交集、并集、差集操作。

  • key—zset:一个key对应一个集合(有序不重复);和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。用于实现积分、排行榜等

四、Redis常用命令

Redis的所有命令可以在http://redisdoc.com/中查看

4.1、string

4.1.1、设置与获取
# (批量)设置key-value
[M]SET key value [key value] [key value] ...
# (批量)获取key对应的value
[M]GET key [key] [key] ...
------------------------------------------------------
# 设置key-value并指定其过期时间(单位:s)
SETEX key second value
# 设置key-value并指定其过期时间(单位:ms)
PSETEX key millisecond value
------------------------------------------------------
# 只有当key不存在时设置key-value
SETNX key value
------------------------------------------------------
# 获取key对应的value并同时设置新value
GETSET key value
------------------------------------------------------
# 获取key对应value的子字符串
GETRANGE key start end

4.1.2、自增与自减
# 自增
INCR key
# 自减
DECR key
------------------------------------------------------
# 指定增量
INCRBY key incrment
# 指定减量
DECRBY key incrment
------------------------------------------------------
# 指定浮点型增量
INCRBYFLOAT key incrment

4.1.3、其他
# 在key对应value后追加
APPEND key value
------------------------------------------------------
# 获取key对应value的字符串长度
STRLEN key
------------------------------------------------------
# 删除key-value
del key [key] [key] [key] ...

4.2、hash

4.2.1、设置与获取
# (批量)设置hash中的field-value值
H[M]SET hash field value [field value] [field value] ...  # 笔者使用6.2版本redis,hset=hmset
# (批量)获取hash中指定field的value值
H[M]GET hash field [field] [field] ...
------------------------------------------------------
# 当hash中的field不存在时,设置field-value
HSETNX hash field value
------------------------------------------------------
# 获取hash中的所有field-value
HGETALL hash
# 获取hash中的所有field
HKEYS hash
# 获取hash中的所有value
HVALS hash

4.2.2、增量
# 为哈希表hash中的域field的值加上增量increment
HINCRBY hash field increment
# 为哈希表hash中的域field的值加上浮点增量increment
HINCRBYFLOAT hash field increment

4.2.3、其他
# 删除hash表中的(多个)field
HDEL hash field [field] [field] ...
------------------------------------------------------
# 检测field是否存在于hash中
HEXISTS hash field
------------------------------------------------------
# 获取hash中field的数量
HLEN hash
------------------------------------------------------
# 获取hash中field的value值的字符串长度
HSTRLEN hash field

4.3、list

注:

  • redis的list的下标(index)参数以0开始,0表示第一个元素,1表示第二个元素;

  • 下标支持负数,-1表示最后一个元素,-2表示倒数第二个元素;

  • 对下标的操作都包含起始与终止位置的下标

4.3.1、插入与弹出
# 从左侧依次插入value;如果list不存在,则创建一个空list并执行LPUSH
LPUSH list value [value] [value] ...
# 仅当list存在且为一个列表时,才从左侧依次插入value
LPUSHX list value [value] [value] ...
# 从右侧依次插入value
RPUSH list value [value] [value] ...
# 仅当list存在且为一个列表时,从右侧依次插入value
RPUSHX list value [value] [value] ...
------------------------------------------------------
# 从list左侧取出value
LPOP list 
# 从list右侧取出value
RPOP list 
------------------------------------------------------
# 阻塞式左弹出,当list中没有元素可供弹出时,将阻塞,直到等待超时或发现可供弹出的元素为止
# 当给定多个list时,依次检查各个列表,弹出第一个非空列表的左侧元素
BLPOP list1 [list2] [list3] ... timeout # timeout:阻塞时间(单位 s)
# 阻塞式右弹出
BRPOP list1 [list2] [list3] ... timeout 

4.3.2、查看
# 查看list中从左侧开始计数,下标为begin至end的value(包含end下标的值)
LRANGE list begin end 
------------------------------------------------------
# 查看list中从左侧开始计数,下标为index的value
LINDEX list index
------------------------------------------------------
# 查看list的长度
LLEN list

4.3.3、其他
# 在list中的pivot之前/之后插入value
LINSERT list BEFORE|AFTER pivot value
------------------------------------------------------
# 将list中下标为index的值设置为value;下标越界时报错
LSET list index value
------------------------------------------------------
# 从左往右,从begin下标开始,到end结束,截取list
LTRIM list begin end
------------------------------------------------------
# 根据count的值,移除list中count绝对值个数的与value相等的元素
# 当count>0时,从左开始,移除count个与value相等的元素
# 当count<0时,从右开始,移除count的绝对值个值与value相等的元素
# 当count=0时,从左开始,移除所有值与value相等的元素
LREM list count value
------------------------------------------------------
# 取出src右侧的元素,并将其添加到des的最左侧
RPOPLPUSH src des

4.4、set

4.4.1、添加与弹出
# 向集合key中添加元素,如果元素已存在,则忽略
SADD key member [member] [member] ...
# 弹出集合key中随机一个元素
SPOP key 
# 移除集合中的元素,不存在的元素将忽略
SREM key member [member] [member] ...
# 将元素member从集合src移动至des中,当src中并不存在member时,不做操作
SMOVE src des member

4.4.2、查看
# 查看集合key中元素的个数
SCARD key
# 查看集合key中所有的元素
SMEMBERS key
# 查看集合key中随机一个元素
SRANDMEMBER key
# 查看集合key中是否存在元素member
SISMEMBER key member

4.4.3、交|差|并集
# 获取所有集合的交集的元素,根据集合运算定律,当给定集合当中有一个空集时,结果也为空集。不存在的key被视为空集。
SINTER key1 [key2] [key3] ...
# 获取所有集合的交集的元素,并将其保存到目标des集合中。如果des已存在,则覆盖;des可以是key本身。
SINTERSTORE des key1 [key2] [key3] ...
# 获取所有集合的并集的元素。不存在的key被视为空集。
SUNION key1 [key2] [key3] ...
# 获取所有集合的并集的元素,并将其保存到目标des集合中。如果des已存在,则覆盖;des可以是key本身。
SUNIONSTORE des key1 [key2] [key3] ...
# 获取所有集合的差集的元素。输入的key超过两个时,只计算前两个;不存在的key被视为空集。
SDIFF key1 [key2] [key3] ...
# 获取所有集合的差集的元素,并将其保存到目标des集合中。输入的key超过两个时,只计算前两个;如果des已存在,则覆盖;des可以是key本身。
SDIFFSTORE des key1 [key2] [key3] ...

4.5、zset

4.5.1、添加与读取
# 向有序集合key中添加元素,若member已存在,则更新它的score值,并重新排序;score可以是整数或者双精度浮点数。
ZADD key [NX|XX] score1 member1 [score2 membber2] [score3 member3] ...
# 以score升序排序的方式,读取有序集合key中下标从begin至end的元素;WITHSCORES:显示score值
# 下标以0开始,可用-1表示最后一个元素
ZRANGE key begin end [WITHSCORES]
# 以score降序排序的方式,读取有序集合key中下标从begin至end的元素
ZREVRANGE key begin end [WITHSCORES]
------------------------------------------
# 查看有序集合key中,score值从min至max的元素(包括score=min及score=max);元素以score值升序排列;当min>max时,返回空
ZRANGEBYSCORE key min max
# 查看有序集合key中,score值从max至min的元素(包括score=max及score=min);元素以score值降序排列。当max<min时,返回空
ZREVRANGEBYSCORE key min max
------------------------------------------
# 查看有序集合key中member元素的score值
ZSCORE key member
# 查看有序集合key中元素的个数
ZCARD key 
# 计算有序集合合key中score值在min至max间(包括score=begin及score=end)元素的个数
ZCOUNT key min max
------------------------------------------
# 按score升序,获取member在有序集合key中的下标
ZRANK key member
# 按score降序,获取member在有序集合key中的下标
ZREVRANK key member

4.5.2、自增
# 给有序集合key中的member元素的score值添加增量incermemt;incrememt可以为负
ZINCRBY key incrememt member

4.5.3、删除
# 删除有序集合key中的元素
ZREM key member1 [member2] [member3] ...
# 按score升序,删除有序集合key中下标在begin到end区间的元素(包括begin和end)
ZREMRANGEBYRANK key begin end
# 按score升序,删除有序集合key中score值在min到max区间的元素
ZREMRANGEBYSCORE key min max

4.5.4、交集|并集
# 计算num个有序集合的交集,并将结果集保存到des中;默认的,结果集中元素的score值是所有给定集元素的score值之和。
# WEIGHTS:乘法因子,每个给定有序集的所有成员的 score 值在传递给聚合函数之前都要先乘以该有序集的因子。默认为1。
# AGGREGATE:聚合方式,结果集中元素的score值计算方式,SUM—取给定集元素的score值之和,MIN—取给定集元素的score值的最小值,MAX—取给定集元素的score值的最大值。默认SUM。
ZINTERSTORE des num key1 [key2] [key3] ... [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]
# 计算num个有序集合的并集,并将结果集保存到des中;默认的,结果集中元素的score值是所有给定集元素的score值之和。
ZUNIONSTORE des num key1 [key2] [key3] ... [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]

4.6、key

4.6.1、查询
# 查看key;pattern有三种形式:*—匹配所有;xxx*—匹配以xxx开头的;*xxx—匹配以xxx结尾的
KEYS pattern

# 随机获取一个key
RANDDOMKEY

# 查询是否存在key
EXISTS key

# 查看key存储值的类型
TYPE key

# 查看key的剩余生存时间
TTL key 	# 单位 s
PTTL key 	# 单位 ms
4.6.2、增删改
# 修改key的名称为newkey
RENAME key newkey
RENAMENX key newkey # 仅当newkey不存在时,修改key为newkey

# 设置key的生存时间,当key已经带有生存时间时,将其更新。
EXPIRE key seconds	# 单位 s
PEXPIRE key milliseconds	# 单位 ms
# 设置key的过期时间点
EXPIREAT key timestamp		# 表示key在timestamp处失效,timestamp表示的是Unix时间戳(一串代表秒数的数字)
PEXPIREAT key milliseconds-timestamp	# milliseconds-timestamp表示的是Unix时间戳(一串代表毫秒数的数字)
# 移除key的生存时间,使key持久保持
PERSIST key

# 序列化key
DUMP key

# 删除key
DEL key [key] [key] ...

posted on 2021-06-21 16:47  敖胤  阅读(149)  评论(0编辑  收藏  举报