Redis简介
Redis是一个内存数据库(非关系型数据库),性能比较强
Redis不使用表,不会要求用户对Redis存储的不同数据进行关联
Redis既可以作为主数据库也可以作为其他存储系统的辅助数据库使用
一些数据库和缓存服务器的特性与功能:
名称 | 类型 | 数据存储选项 | 查询类型 | 附加功能 |
Redis | 使用内存存储 的非关系数据库 | 字符串、列表、集合、 散列表、有序集合 | 每种数据类型都有自 己的专属命令, 另外还有批量操作和 不完全的事务支持 | 发布与订阅, 主从复制, 持久化, 脚本 |
Memcached | 使用内存存储 的键值缓存 | 键值之间的映射 | 创建命令、读取命令、 更新命令、删除命令以 及其他几个命令 | 为提升性能而设 的多线程服务器 |
MySQL | 关系数据库 | 每个数据库可以包含多个表, 每个表可以包含多个行; 可以处理多个表的视图(view); 支持空间(spatial)和第三方扩展 | SELECT 、 INSERT 、 UPDATE 、 DELETE 、 函数、存储过程 | 支持ACID性质 (需要使用InnoDB), 主从复制和主主复制 |
PostgreSQL | 关系数据库 | 每个数据库可以包含多个表, 每个表可以包含多个行; 可以处理多个表的视图; 支持空间和第三方扩展; 支持可定制类型 | SELECT 、 INSERT 、 UPDATE 、 DELETE 、 内置函数、自定义的存储过程 | 支持ACID性质,主从复制, 由第三方支持的多主复制 |
MongoDB | 使用硬盘存储 的非关系文档存储 | 每个数据库可以包含多个表, 每个表可以包含多个无schema 的BSON文档 | 创建命令、读取命令、 更新命令、删除命令、 条件查询命令,等等 | 支持map-reduce操作, 主从复制,分片, 空间索引 |
Redis提供的5种结构:
结构类型 | 结构存储的值 | 结构的读写能力 |
STRING | 可以是字符串,整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作; 对整数和浮点数执行自增或者自减操作 |
LIST | 一个链表,链表的每个节点都包含了一个字符串 | 从链表的两端推入或者弹出元素 ;根据偏移量对链表进行修剪(trim); 读取单个或者多个元素; 根据值查找或者移除元素 |
SET | 包含字符串的无序收集器,并且被包含的而每个字符串都 | 添加、获取、移除单个元素; 检查一个元素是否存在于集合中; 计算交集、并集、差集; 从集合里面随机获取元素 |
HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对; 获取所有键值对 |
ZSEF(有序集合) | 字符串成员(member)与浮点数分值(score)之间的有序映射 ,元素的排列顺序由分值的大小决定 | 添加、获取、删除单个元素; 根据分值范围或者成员来获取元素 |
运行Redis
打开Redis的安装目录,找到Redis的客户端,点击运行
Redis的字符串(string)
Redis字符串实例:
#密码:auth "你的密码"
auth "123456"
#设置值(k:hello,v:world)
set hello world
#获取值(k:hello)
get hello
#删除值(k:hello)
del hello
#获取值(k:hello)
get hello
Redis列表(list)
Redis列表实例:
#RPUSH(将元素推入列表的右端)
rpush list-key item
#LPUSH(将元素推入列表的左端)
lpush list-key item4
rpush list-key item1
rpush list-key item2
rpush list-key item3
#lrange获取列表在给定范围上的所有值
lrange list-key 0 -1
#取出列表上面的单个元素
lindex list-key 1
#lpop从列表左端弹出1个元素
lpop list-key
#rpop从列表右端弹出1个元素
rpop list-key
Redis集合(set)
Redis集合实例:
#添加元素到集合
sadd set-key item
sadd set-ket item1
sadd set-key item2
sadd set-key item3
sadd set-key item4
sadd set-key item5
#返回集合所有元素
smembers set-ket
#检查某个元素是否都在集合中
sismember set-key item6
sismember set-key item5
#如果指定的元素在集合中则移除
srem set-key item5
Redis散列(hash)
Redis散列实例:
#在散列里面关联给定的键值对
hset hash-key sub-key value1
hset hash-key sub-key2 value2
hset hash-key sub-key3 value3
#获取指定的散列键的值
hgetall hash-key
#获取散列中所有的键值对
hget hash-key sub-key1
#如果指定的键存在于散列里面,那么移除这个键
hdel hash-key sub-key2
Redis有序集合(sorted set)
Redis有序集合:
#讲一个带有定分值的成员添加到有序集合里面
zadd zset-key 728 member1
zadd zset-key 982 member0
zadd zset-key 982 member0
#根据元素在有序排列中所处的位置,从有序集合里面获取多个元素
zrange zset-key 0 -1 withscores
#获取有序集合在给定分值内的所有元素
zrangebyscore zset-key 0 800 withscores
#移除有序集合中指定的成员
zrem zset-key member1