介绍
Redis官方的解释:The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个非关系型数据库(NOSQL)
NOSQL ( not only sql ) 不仅仅是sql, 它是对所有非关系型数据库的一种统称。
NOSQL和RDBMS的区别
RDBMS:
高度组织化结构化数据
结构化查询语言(SQL,支持sql语句。
数据和关系都存储在单独的表中。
支持数据操纵语言DML [增删改],数据定义语言 DDL [表结构的修改]
严格的一致性,支持事务
NOSQL:
代表着不仅仅是SQL
没有声明性查询语言 [不支持select 语句]
键 - 值对存储,【类似于map】
不支持事务的一致性
非结构化和不可预知的数据,数据可以是很多类型。
NOSQL的一些产品
redis:多用于java开发、mongodb:多用于前端、hbase:多用于数据库
安装Redis
首先安装c语言的插件 执行命令 yum install gcc-c++
下载redis Download | Redis
把redis压缩包上传到linux指定目录下,然后到指定目录解压 tar -zxvf XXX.tar.gz
然后切换到解压后的目录 cd XXX 执行命令 make 编译源码
之后再执行命令 make install 安装redis (这时redis会自动配置环境变量)
启动redis执行命令 redis-server redis.conf
客户端连接redis 执行命令 redis-cli
redis.conf配置
改为任意端口可连
取消保护
默认端口号
后台启动
保存之后重启 redis-server redis.conf 再连接客户端 redis-cli
安装redispuls图形化客户端软件
相当于MySQL中的navicat
链接地址为虚拟机的ip 端口号为虚拟机redis中的端口号
连接redis
检查防火墙是否放行端口
更改上面刚讲的redis.conf配置
连接后的界面如下
redis中常用的命令
关于数据库的命令
select n (选择第n个数据库) redis中默认有16个数据库0~15
flushdb 清空当前数据库数据
flushall 清空所有数据库数据
关于key的命令
set key value
get key
判定key是否存在
查看所有key
expire key seconds 给key设置时间(单位秒)
ttl key (查看key剩余时间)
redis支持的数据类型
redis的value可以是多种数据类型,如下:
常用的有String字符串类型、Lists队列类型、Sets集合类型、Hashes哈希类型、SortedSet有序集合类型等。
字符串类型
set key value: 存储字符串类型的数据,这里的key不允许重复。
get key: 根据key获取对应的value值。
mset key value key value ...: 存储多个key-value值
mget key key key....: 获取多个key对应的value
setnx key value: 如果指定的key存在,则不存入,如果不存在则存入。
incr key: 为指定的key递增,只能对整型。
decr key: 为指定的key递减
decrby key number: 为指定的key递减相应的值
del key:删除指定的key
hash数据类型
hset key field value: 存放hash类型的数据
hget key field: 获取对应field字段的值
hgetall key: 获取key对应hash数据内容
hvals key: 获取hash中所有的value值
hkeys key: 获取hash中所有field字段
List列表类型
它的value值为一个列表队列类型,列表中的元素允许重复。
key对应的value类型为一个列表类型。
lpush key value value value ... :从左边存放列表数据
rpush key value value value ... :从右边存放列表数据
lpop key [count]: 从左边取出元素。
lrange key start end; 从左边获取指定范围的元素 -1:表示最后一个元素
set集合类型
它的value值类型为set集合,集合中的元素无序,且不能有重复的数据。
sadd key element element....: 存放set类型的元素
smembers key: 获取指定key对应的所有元素
srandmember key [number]: 随机获取集合中一个或多个元素
sinter key key: 求多个集合的交集
spop key: 随机移除一个或多个元素
sorted set集合类型
它和set的区别就是在添加元素时需要指定一个分数,用该分数进行排序。
zadd key element score element score: 添加有序集合
zrange key start end: 从分数小到大的顺序获取集合中的元素
zrevrange key start end: 返回有序集中指定区间内的成员,通过索引,分数从高到底