redis 基本数据类型及使用
文章目录
相对其它 nosql 数据库的优势
- 支持数据的持久化,可以将内存中的数据保存到磁盘中,下次重启以后再加载回内存 ;
- 支持更多的数据类型,除了
KV
以外,还有list set hash zset
等 ; - 支持数据的备份,主从模式的数据备份
杂项知识
-
单线程
-
默认是16个数据库,初始使用第 0 数据库 ;
数据库之间的切换:
select dbid
; -
dbsize 查看当前数据库
key
的数量 ;查看所有
key
的内容:keys *
;也支持模糊查询的 ;
-
Flushdb 清空当前库 ;
-
flushall : 通杀所有库 ;
-
统一密码:所有的数据库,都是使用同一个密码 ;
-
redis索引,都是从零开始 ;
-
端口号为6379的故事:手机键盘
MERZ
;
基本数据类型
-
String
redis
的string
是二进制安全的,也就是它可以包含任何东西,比如jpg图片或者序列化对象 ;对应的
value
,最多可以保存512
M数据 ; -
Hash
-
List ,底层是个链表 ;
-
Set
-
Zset
对于其中的 key
,每一个 key
就是一个对象 ;
Key 关键字
-- 列出所有的key
key *
-- 判断某个 key 是否存在
exists key
-- 剪切操作,将当期的 key 移动到指定的数据库
move key db
-- 为给定的 key 设置过期时间,按照 秒 计算
expire key s
-- 查看 key 还有多少秒过期,-1 永不过期,-2 已过期
ttl key
-- 查看 key 是什么类型
type key
-- 删除 key
del key
String 类型(单键单值)
-- 在 key 末尾追加字符串
append
-- 获取字符串的长度,字符数
strlen
-- key 值每次加/减去 1,下面的几个数值的操作,value 必须是数值
incr/decr key
-- 一次性加/减 num
incrby/decrby key num
-- 获取指定区间的值,取字符串的多少位到多少位 ,角标从 0 开始,-1 表示到最后
getrange key begin end
-- 从指定位开始,插入 value ,会覆盖掉后面的数据
setrange key index value
-- 设置 key 的缓存时间
setex key time value
-- 创建 key 的时候,判断下是否存在,如果存在,则不创建
setnx key value
-- 一次性对多个值进行操作,但是如有一个操作失败,则全部失败
mset/mget/msetnx
List 类型 (单键多值)
-- 从两端插入数据
lpush/rpush key values
-- 遍历 key 角标从零开始,-1 表示到最后
lrange key begin end
-- 从两端取值
lpop/rpop
-- 根据角标获取对应的值
lindex key index
-- 获取 key 长度,也就是 value 的个数
llen key
-- 删除对应 key 的 N 个 相同的value
lrem key N value
-- 截取指定范围的值,然后再次赋值给 key
ltrim key begin end
-- 把源右边的拿走,放到目的的左边
rpoplpush orignalLsit newList
-- 改变具体下标对应的值
lset key index value
-- 在 key 的某个位置插入 value
linsert key before/after origanl new
Set 类型 (单键多值)
-- 添加一个或者对个值,对于重复添加的值,不会爆错,但是会自动额过滤掉 ;
sadd key value[s] ;
-- 列出 key 的所有 value
smembers key
-- 判断 value 在不在 key 里面
sismember key value
-- 获取集合中的元素个数
scard key
-- 删除集合中的元素
srem key value
-- 在 set 里面随机出 num 个整数
srandmember key num
-- 随机出栈一个数
spop key
-- 将 key1 里面的某个 value1 添加到 key2 里面
smove key1 key2 value1
-- 差集 以第一个为参照,在第一个里面,不在后面任何一个里面
sdiff key1 key2 ...keyN
-- 交集
sinter key1 key2 ...keyN
-- 并集
sunion key1 key2 ...keyN
Hash类型 (KV模式,V是一个键值对)
-- 常用的操作
hset hget hmset hmget hgetall hdel
-- hash 的key 对应的 键值对 数量
hlen
-- 某个 key 对应的KV里面,是否存在要找的 K
hexists key K-V-K
-- 获取 key 对应的键值对的所有键
hkeys key
-- 获取 key 对应的键值对的所有值
hvals key
-- 对key 的 K-V-V 数值进行增减
hincrby/hincrbyfloat key K-V-K num
--
hsetnx key K-V-V value
Zset类型 (KV模式,V是一个键值对)
-- 添加、创建元素
zadd key score1 value1 score2 value2 ... scoreN valueN
-- 取值
zrange key begin end [withscores]
-- ( 不包含 还可以选择限制显示的数量
zrangebyscore key [(]beginScore [(]endScore [limit beginIndex num ]
-- 删除元素
zrem key K-V-V
-- 返回 键值对的数量
zcard key
-- 计算在某个区间内的键值对的个数
zcount key score1 score2
-- 获取 K-V-V 的下标值
zrank key K-V-V
-- 获取对应的 K-V-V 对应的 score
zscore key K-V-V
-- 逆序获取下标值
zrevrank key K-V-V
-- 逆序输出
zrevrange key beginindex endindex
-- 从高到低 输出对应的分数对应的
zrevrangebyscore key highScore lowScore