Redis是一个开源的
高性能键值对数据库。他通过
提供多种键值数据类型来适应不用场景下的存储需求,并借助许多高层级的接口使其
可以胜任如缓存、队列系统等不同的角色。
Redis是REmote DIctionary Server(远程字典服务器)的缩写。
Redis中的键值可以是多种类型:
字符串类型
散列类型
列表类型
集合类型
有序集合类型
Redis与Memcached的区别:
Redis
性能:单线程模型,
功能:
支持高级数据类型和持久化
作为缓存系统,Redis还可以限定数据占用的最大内存空间,数据达到空间显限制后按规则淘汰不需要的键。键值的不同类型可以实现对应功能(如列表类型支持阻塞式读取)。redis还支持消息模式,可构建聊天室等系统。
Memcached
性能:支持多线程,在多核服务器上性能更高。
Redis提供了一百多个命令,但常用的只有十几个。
重点:《Redis入门指南》2.5 多数据库
Redis默认支持16个数据库(一个数据库也就是一个字典),每个数据库对外都是以数字为代号存在的(Redis不支持自定义数据库名字,每个数据库都以编号命名),从0开始依次递增。客户端与Redis建立连接后会自动选择0号数据库。
Redis没有访问权限控制,不支持数据库不同密码;用户要么可以访问所有数据库,要么都不能访问。
Redis一个实例中存储同一个应用的数据。
Redis键名可以用 “ : ”,“ . ”
Redis不支持数据类型嵌套。
Redis命令
KEYS
? / * / [] / \x 等通配符,KEYS key
查询匹配的键
KEYS 命令会遍历Redis中的所有键,当键数量过多的时候回影响性能,不建议在生产环境中使用。
EXISTS key
判断一个键是否存在 存在返回1,否则返回0。
DEL key [key.......] 删除一或多个键,返回的是成功删除的个数。
TYPE key 获取此键值的数据类型。
string(字符串)hash(散列)list(列表)set(集合类型)zset(有序集合)
字符串类型:
get 、set 、INCR(递增)、
以下为发布文章的Redis操作:
其他命令:INCRBY key increment(与INCR不同的是可以用increment参数指定一次增加的数值)
DECR key (让键值递减)
DECR key increment (让键值以指定数值递减)
浮点、追加、长度、获取多个MGET,MSET、位操作。其他参见:3.2.4 命令拾遗
散列类型:H,HM(这里的M是MORE的意思)
HSET不区分插入和更新,插入返回1,更新返回0。
散列的作用就是字典项,可以放入对象,每个对象都可以自定义属性。
列表类型:L
列表类型适用于栈或者队列。LPUSH,LPOP 或者RPUSH,RPOP
其他命令:LLEN key(获取列表元素个数)
LRANGE key start stop (获取片段)
LREM key count value (删除列表中指定的值)
集合类型:S
SADD 增加 SREM 删除
集合中不能有重复元素,如果加入已经存在于集合中的元素会自动忽略这个值(不是覆盖,是忽略)。
其他命令: 获取集合中所有元素,判断是否在集合中,集合间运算(差、交、并集),
有序集合类型:Z
添加
ZADD KEY SCORE MEMBER
获取
ZSCORE KEY SCORE
获得某个范围内的元素
ZRANGE key start stop (WITHSCORES) 从小到大的顺序给出结果
包含两端元素,索引从零开始,负数代表从后向前查找;-1表示最后一位。WITHSCORES表示带值输出。
ZREVRANGE key start stop 从大到小的顺序给出结果
使用一种类型的命令操作另一种类型的键会报错,但set命令可以修改任何其他类型键,但是改后类型就变成字符串类型了。