一、 redis是什么
Redis(Remote Dictionary Server)是一个由Salvatore Sanfilippo写的key-value存储系统。是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets),
有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial)
索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU
eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过
Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
二、数据库的分类:
①关系型数据库
MySQL
Oracle
SQL Server
②非关系型数据库
NOSQL : Not Only SQL
nosql和关系型数据库比较?
三、优点:
1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
缺点:
1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
3)不提供关系型数据库对事物的处理。
四、Redis数据类型:
数据类型 | 可以存储的值 和操作 |
---|---|
STRING | 字符串、整数或者浮点数 ; 对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作 |
LIST | 列表 ; 从两端压入或者弹出元素读取单个或者多个元素进行修剪,只保留一个范围内的元素 |
SET | 无序集合 ;添加、获取、移除单个元素检查一个元素是否存在于集合中计算交集、并集、差集从集合里面随机获取元素 |
HASH | 包含键值对的无序散列表 ; 添加、获取、移除单个键值对获取所有键值对检查某个键是否存在 |
ZSET | 有序集合 ; 添加、获取、删除元素根据分值范围或者成员来获取元素计算一个键的排名 |
Redis安装:主要注意的是是否支持Windows版本
五、常用Redis的命令:
1、String类型
set key value es set key1 “123”
get key value es get key1
incr key 如果值是整数类型,加1 – 指定增加多少 es 加三就是 incrby key 3
decr key 将值减一 --指定减多少,同上 decrby key 4
2、Hash类型
HSET key field value 一次只能设置一个字段值 es hset user username
zhangsan
HMSET key field value [field value …] 一次可以设置多个字段值 es hmset user age 20 username lisi
HGET key field 一次只能获取一个字段值 es hget user username
HMGET key field [field …] 一次取多个字段值 es hmget user age username
hgetall user 一次得到所有的值
HDEL key field [field …] 删除具体的字段信息
3、list类型
redis list的类型,是双链的,能从左边加入,也能从右边加入,就像一个管道,如果取的话,左边加入的,是先进后出,右边加入的是先进先出
(左边加入)LPUSH key value [value …] es lpush key3 1 2 3 假如对上面的数据进行取出
lrange key3 0 -1 lrange + 键名 + 开始 + 结束 (开始跟结束全部包括,-1是全部)es上面的得出结果就是 3,2,1
(右边加入) rpush key3 4 5 6 对上面的取出,结果是 3,2,1,4,5,6
(左边弹出)lpop key3 (右边弹出) rpop key3 (list里面的数量)LLEN key3
4、set集合
集合和list的类型的区别是,集合是无序的,list是有序的,集合是唯一的,而list值不是唯一的 (加入数据)SADD key
member [member …] es sadd set1 a b c 返回加入成功的个数
(移除数据)SREM key member [member …] es srem set1 c d 返回成功的个数
(获得集合当中所有数据)SMEMBERS set1 (判断是否在集合当中) SISMEMBER key member es sismember set1 a 是返回 1 不是返回 0
5、zset有序集合
(添加数据)ZADD key score member [score member …] es zadd zset1 80
zhangsan 89 lisi 94 wangwu 如果加入的是已经存在的,会更改原本的枫树(删除数据)ZREM key member [member …] es zrem zset1 lisi (获取分数)ZSCORE
key member es zscore zset1 lisi
按照分数排序返回,start,stop,同时包含,加入带上WITHSCORES,会把分数也返回回去(分数从小到大的顺序返回)ZRANGE key start stop [WITHSCORES]
(分数从大到小的顺序返回)ZREVRANGE key start stop [WITHSCORES]