Redis笔记
Redis(Remote Dictionary Server),开源、基于C语言、内存可持久化的NoSQL的键值对数据库。
命令:redis命令不区分大小写,set和SET效果相同
主键(key):任意二进制序列(字符串,JPEG文件内容),空字符串是有效的key
key规则:
- 格式约定:object-type:id:field
- 不用太长的键值。不仅消耗内存,而且在数据查找中计算成本很高
- 太短的键值可读性差 “user:1000:password”代替“u:1000:pwd
一、String数据类型和Hash数据类型
- set
set key value
把值value赋给key,如果key不存在,新增;否则,更新
- setnx(set if not exists)
setnx key value
只insert不update,仅key不存在时设置key的值为value,并返回1;否则返回0
- setex
setex key seconds value
设置key的过期时间和值。过期时间seconds单位是秒。设置过期时间和值是原子操作。
- mset
mset key value [key value ...]
同时设置多个key-value
- msetnx
msetnx key value [key value...]
所有key都不存在才执行set操作
选择建议
-
当数据是简单的键值对或需要原子操作整个值时,使用String
-
当数据有多个相关属性且需要单独访问/更新时,使用Hash
-
对于小对象(字段少),Hash通常更节省内存(使用ziplist编码时)
Redis的Hash类型在存储对象时比将整个对象序列化为JSON字符串存储在String类型中通常更高效,特别是当需要频繁访问或修改对象的部分属性时。
二、List数据类型