Redis入门-Redis的基本数据类型使用


Redis是NoSQL数据库,即非关系型数据库,数据存储在内存中,经常用作缓存使用。

Redis的基本数据类型

Redis有五大基本数据类型,分别为string、hash、list、set和zset。此处的数据类型指的是存储的数据的类型,即value的类型。

string类型

string类型的使用

Redis提供了对string类型数据的基本操作(增删查)、对数值操作的API、设置数据生命周期。
对string类型数据的基本操作

set key value 增加数据,若key存在则覆盖。
get key 获取key的value。
del key 删除key。
mset k1 v1 k2 v2 … 添加/修改多个数据。
mget k1 k2 … 获取多个数据。
strlen key 获取数据字符长度。
appen key value 追加信息到原始信息后。

对数值操作的API(对string类型操作,但必须为数值串)

incr key 原子自增1。
incrby key num key的value增加num数值。
incebyfloat key num key的value增加num数值,支持浮点数。
decr key 原子自减1。
decrby key num key的value减少num数值。

设置数据的生命周期

setex key seconds value 设置秒。
psetex key milliseonds value 设置毫秒。

string数据的注意事项

set与mset的选择:通过网络发送时长与执行时长继续取舍,再考虑数据大小。
string数据最大存储量为512MB。
数值计算阻碍大范围 Long.MAX_VALUE。

hash类型

hash类型的使用

hash的Redis存储空间

key field1 value1
     field2 value2

基本操作

hset key field value 添加数据,若存在则覆盖。
hget key field 获取数据,通过字段。
hgetall key 获取key所有字段以及数据。
hdel key field1… 删除key中字段数据。
hmset key field1 v1 field2 v2 … 添加多个数据,若存在则覆盖。
hmget key field1 field2 … 获取key的多个字段数据
hlen key 获取hash中字段的数量
hexists key field 获取hash中是否存在指定字段。
hkeys key 获取hash中所有字段名
hvals key 获取key中所有字段值

hash字段的数值操作

hincrby key field increment 指定字段原子增加increment 数值
hincrbyfloat key field increment 指定字段原子增加increment数值,increment可为浮点型小数。

支持分布式锁API

hsetnx key field value field有值,失败,无值,添加并成功。

操作hash类型数据注意事项

  1. hash类型下的value只能存储value,不允许存储其他数据类型,不能嵌套使用。
  2. 每个hash可以存储2^32-1个键值对。
  3. hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率就会降低。

list类型

list类型的使用

list是双向队列,可以保证时间顺序。
对list类型的基本操作

lpush key element1 element2 … 左侧进入队列。
rpush key element1 element2 … 右侧进入队列。
lrange key start stop 左侧查询,获取数据的顺序与插入的顺序相反 ,右进左查顺序一致。
lindex key index 获取左侧队列索引中的值。
llen key list中数据的个数。
lpop key 左侧出队
rpop key 右侧出队
blpop element1 [element2] timeout 规定时间内从左侧出队一个数据,超时返回。
brpop element1 [element2] timeout 规定时间内从右侧出队一个数据,超时返回。
lrem key count value 从队列中移除count个value值。

操作list数据类型注意事项

  1. list保存的数据是string类型的,最多2^31-1个元素。
  2. list具有索引概念,但是操作数据时通常以队列/栈形式FIFO/LIFO。
  3. list操作可以对数据进行分页操作(lrange),通常第一页信息来自于list,第二页以后数据来源数据库。

set类型

set类型的使用

set的存储空间:key member1 member2 …
set类型的基本操作

sadd key member1 [member2] 添加数据(由于是集合,添加相同member会失败,无序)。
smembers key 获取全部数据。
srem key member1 [member2] 删除数据。
scard key 获取集合数据总量。
sismember key member 判断集合中是否包含指定数据。
srandmember key [count] 随机操作集合中指定数量的数据。
spop key 随机获取集合中某个数据并将该数据移除集合。

集合操作

sinter key1 key2 集合交集
sunion key1 key2 集合并集
sdiff key1 key2 集合差集
两集合的交并差操作存储到指定集合中,destination为第三集合
sinterstore destination key1 key2
sunionstore destination key1 key2
sdiffstore destination key1 key2
将指定数据从原始集合移动得到目标集合
smove source destination member

zset类型

zset类型使用

zset类型基本操作

zadd key score1 member1 [score2 member2] 添加数据(相同的member会覆盖)
zrange key start stop [WITHSCORES] 获取部分数据,递增排序(添加 WITHSCORES 会显示分数)
zrevrange key start stop [WITHSCORES] 获取部分数据,递减排序。
zrem key member … 删除数据
zrangebyscore key min max [WITHSCORES] [LIMIT] 可分页获取范围数值的数据
zrevrangebyscore key max min [WITHSCORES] [LIMIT] 可分页获取范围数值的数据
条件删除数据:
zremrangebyrank key start stop 按索引删除数据
zrermrangebyscope key min max 按分数删除数据
获取集合数据总量:
zcard key
zcount key min max
集合交并操作:
zinterstore destination numkeys key … // 交集并将相同的member的score相加。
zunionstore destination numkeys key … // 差集 将numkeys个数的集合(numkeys表示参与计算的集合的个数,后面跟多个key)进行差运算,得出结果放入[destination]集合中。
获取数据对应的索引(排名):
zrank key member 递增
zrevrank key member 递减
score值获取与修改:
zscore key member 获取该member的分数。
zincrby key increment member 为该member增加increment分数。

zset类型的操作注意事项

  1. score保存的数据存储空间是64位。
  2. score保存数据也是双精度double值,可能损失精度。
  3. zset底层还是基于set结构,数据不能重复。

redis的通用命令

key的通用操作

keys pattern 通配符查询key,(* 匹配任意数量符号 | ? 匹配一个任意符号 | [ ] 匹配一个指定符号)
del key 删除key
exists key 获取key是否存在
type key 获取key类型
key的时效性控制:
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
获取key的有效时间:
ttl key 过期数据阶段有概念,-2为不存在,-1为无过期概念。
pttl key
persist key 切换key从时效性转为永久性
为key改名:
rename key newkey 改为有存在的key名称时,会进行覆盖操作
renamenx key newkey 改为有存在的key名称时,会失败
sort 对key中的value进行排序

对db基本操作

select index 切换数据库
move key db 数据迁移
dbsize 获取数据库中key数量
数据清除:
flushdb 清除当前库数据
flushall 清除所有库数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值