redis命令
randomkey: 返回随机的key
exsis key: 判断某个key是否存在,存在返回1,不存在0
type key:返回key存储的类型
del key:删除key 删除成功返回1,失败/不存在0
rename key newkey:改名
expire key time:设置key的生命周期以秒为单位 成功返回1,不存在返回0
pexpire key 整数值:设置key的生命周期以毫秒为单位
ttl key:查询key的生命周期(秒) 永久返回-1,不存在返回-2
pttl key:查询key 的生命周期(毫秒)
persist key:把指定key设置为永久有效 成功返回1,失败/不存在0
什么是Redis 和 Memcache
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,跨平台的非关系型的高性能键值对数据库。
redis 主要是基于内存来进行高性能、高并发的读写操作的。数据类型:string、set(无序集合)、zset(有序集合)、hash(哈希)、list(列表)
memcache是一套分布式的高速缓存系统 数据类型:仅字符串 类似 cookie
Redis常用作分布式锁、还支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案。
Redis的优缺点
优点 |
---|
读写性能优异,Redis能读的速度是110000次/s,写的速度是81000次/s。 |
支持数据持久化,支持AOF和RDB两种持久化方式。 |
支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行 |
数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等数据结构 |
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。 |
缺点 |
---|
数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 |
Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。 |
主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。 |
Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。 |
一、Redis的五大数据类型
String(字符串)、list(列表)、Set(集合)、Zset(sorted set:有序集合)、Hash(哈希,类似java里的map)
特性:string:储存同样的key时,前面的key对应的value会被覆盖。
hash:一个存储空间保存多个键值对数据,存储效率高。key和value都一样那么会被覆盖的。
list:双向链表结构,添加先后有顺序。可以存储大量数据,有索引,随时增删改查,能进行同类型可重复数据的操作,不覆盖。但是双向链表结构存储效率低,读取效率慢。
set:储存效率高,取出时是无序的(指添加先后的顺序)。能够保存大量的数据,由于高效的内部存储机制,读取效率高。可用于同类型不重复数据的操作。
sorted_set (也称zset类型):具有排序特征,于权重而言从小到大或从大到小排序,能够保存大量的数据。
Redis中常用的命令
命令 | Redis中 | PHP中 |
---|---|---|
清空当前数据库所有key | flushdb | $redis->flushdb |
清空所有数据库的所有key | flushall | $redis->flushall |
查询所有的key | keys * | $redis->keys('*') |
判断某个key是否存在 | exists key | $redis->exists('key') |
返回当前数据库中key数目 | dbsize | $redis->dbsize |
设置key多少秒过期 | expire key 10 | $redis->expire('key',ttl) |
同时将多个 field-value (字段-值)对设置到哈希表中,键名相同会替换值,不同键名会往里添加 | HMSET myhash field1 "Hello" field2 "World" | $redis->hmset(key,value(索引数组)) |
切换数据库目录0-15 | select(int) | $redis->select(int) |
追加到key的现有value中 | $redis->append($arr,'string') | |
自增1,如不存在key,赋值为1(仅整型) | $redis->incr('key') |