1.查看所有key值
keys *
2.删除key,支持批量删除
del key1 key2... //返回的结果是成功的个数
3.返回序列化的值
dump key
4.返回key是否存在
exists key1 key2... //返回存在的个数
5.设置、取消过期时间(单位:秒、毫秒)
expire key seconds
pexpire key milliseconds
取消
persist key
使用场景:
1 、 限 时 的 优 惠 活 动 信 息 \color{red}{1、限时的优惠活动信息} 1、限时的优惠活动信息
2 、 网 站 数 据 缓 存 \color{red}{2、网站数据缓存} 2、网站数据缓存
3 、 手 机 验 证 码 \color{red}{3、手机验证码} 3、手机验证码
4 、 限 制 网 站 访 客 访 问 频 率 \color{red}{4、限制网站访客访问频率} 4、限制网站访客访问频率
6.返回key的剩余生存时间(单位:秒、毫秒)
ttl key //秒,永久返回-1,key不存在返回-2
pttl key //毫秒
**7.添加key-value,取值 s e t n x 是 解 决 分 布 式 锁 的 方 案 \color{red}{setnx是解决分布式锁的方案} setnx是解决分布式锁的方案 **
set <key> <value>
setnx <key> <value> //当key不存在的时候,为key赋值
get key
8.查找key
keys pattern(通配符)
*代表查询所有 ?代表一个符号
9.随机返回key
randomkey
10.修改key的名称
rename key newkey
11.返回key的类型
type key
12.从当前数据库移动key到指定数据库中
move key db
13.切换数据库
select [index]
14.截取字符串
getrange key start end //包括start end在内
15.获取并赋值key的值
getset key value //若key不存在,则返回nil;若存在,返回key的值并修改
strlen key //查看长度
16.自增自减 ( 具 有 原 子 性 ) \color{red}{(具有原子性)} (具有原子性)
incr key [增量] //执行增量操作,如果不存在则赋值0再加一
decr key [减量]
17.字符串拼接
append key value //如果存在,就添加到最后
Redis hash是一个string类型的field和value的映射表, hash特别适合用,于存储对象, Redis中每个hash可以存储232-1键值对(40多亿)可以看成具有KEY和VALUE的MAP容器,该类型非常适合于存储值对象的信息,该类型仅占据很少的内存空间(相比于JSON)。
1.赋值语法,可以一次赋值多个属性
hset key field value [field2 value2] //为指定的key设定field/value
hmset key field value [field2 value2]
2.hash取值
hget key field //根据field取值
hmget key field [field2] //根据field取一系列的值
hgetall key //获取所有字段和值
3.获取hash中的字段
hkeys key //获取hash表中的字段
hlen key //返回字段的数量
4.删除语法
hdel key field1 [field2] //删除一个或多个字段
1、常用于存储一个对象
2、 为什么不用string存储一个对象?
hash是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成hashmap存放在redis中。用户ID为童找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:
第一种方式将用户ID作为董找key,把其他信息封菜成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需更把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复奈问题。
第二种方法是这个用户信息对蒙有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。总结:Redis提供的Hash很好的解决了这个问题, Redis的Hash实际是内部存储的Value为一个HashMlap,并提供了直接存取这个Map成员的接口.