Redis数据库(入门篇)
Redis数据库:非关系型数据库,即NoSql数据库,基于内存存储系统(内存+磁盘),其中有常用的五个数据类型:String,Hash(键值对集合),List(双向队列集合),Set集合,SortedSet(可排序集合)
一、关系型数据库与非关系型数据库
1、关系型数据库优缺点
① 优点
-容易理解
-使用方便,通用的sql语言
-易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大
大降低了数据冗余和数据不一致的概率
② 缺点
-磁盘I/O是并发的瓶颈
-海量数据查询效率低
-横向扩展困难,无法简单的通过添加硬件和服务节点来扩展性能和负载能力,
当需要对数
-据库进行升级和扩展时,需要停机维护和数据迁移
-多表的关联查询以及复杂的数据分析类型的复杂sql查询,性能欠佳。因为要
保证acid,必须按照三范式设计。
Orcale,Sql Server,MySql,DB2
2、非关系型数据库优缺点
① 优点
-根据需要添加字段,不需要多表联查。仅需id取出对应的value
-适用于SNS(社会化网络服务软件。比如facebook,微博)
-严格上讲不是一种数据库,而是一种数据结构化存储方法的集合
② 缺点
-只适合存储一些较为简单的数据
-不合适复杂查询的数据
-不合适持久存储海量数据
K-V:Redis,Memcache
文档:MongoDB
搜索:Elasticsearch,Solr
可扩展性分布式:HBase
二、在linux环境下安装Redis
提前准备好虚拟机…(不会装虚拟机的看以前的文章)
1、下载tar包解压并安装
官方地址下载
① 上传至Linux&解压tar包
解压命令:》
tar zxvf redis-5.0.3.tar.gz
安装Redis需要c++环境:》
yum -y install gcc-c++ autoconf automake
切入解压后的文件夹中进行编译:
cd redis-5.0.3/
make
指定安装路径并创建路径:》
mkdir -p /usr/local/redis
make PREFIX=/usr/local/redis/ install
注意:不使用:make install(make install默认安装到/usr/local/bin目录下) 使用:如果需要指定安装路径,需要添加PREFIX参数 ··
安装成功:
2、基本测试与配置
①、启动服务器与客户端
./redis-server
./redis-cli
此时会发现,服务器会导致这个窗口无法直接启动客户端,需要另开窗口,所以需要进行配置
②、配置redis修改redis.conf文件
Vim查找内容直接输入‘/+内容回车即可,用n键查找下一个’
vim redis.conf
daemonize yes
protected-mode no
# bind 127.0.0.1 ::1
requirepass 123456
启用linux中的客户端: 此处-p:端口号,-a:服务器访问密码
使用windows客户端连接服务器:
测试连接即可,ip address查看自己linux地址
二、常用五类数据结构
help@String /hash/list...可以获取相关用法
1、String 类型
? 常用功能
添加和查询
set :添加一条String类型数据
get :获取一条String类型数据
mset :添加多条String类型数据
mget :获取多条String类型数据
递增递减
incr id
incrby id 10
incrbyfloat id 5.52
decr id
decrby id 10
删除
del age
修改
set id 20
setnx id 30
位操作:假设模拟一个人的每日签到情况:1为签到,0为未签到
setbit admin 1 1
bitcount admin
2、Hash类型
? 常用功能
hset :添加一条hash类型数据
hget :获取一条hash类型数据
hmset :添加多条hash类型数据
hmget :获取多条hash类型数据
hgetAll :获取指定所有hash类型数据
hdel :删除指定hash类型数据(一条或多条)
hset Test value 100
hget Test value
hset Test json "{\"name\":\"lisi\",\"age\":30}"
hget Test json
3、List双向队列类型
? 常用功能
lpush :左添加(头)list类型数据
rpush :右添加(尾)类型数据
lrange : 获取list类型数据start起始下标 end结束下标 包含关系
llen :获取条数
lrem :删除列表中几个指定list类型数据
--list双向队列
--0~-1:-1代表最后
--rpop:尾部出队列
--lpop:头部出队列
--rpush:尾部添加
--rpop:头部添加
--lset:根据索引修改值
--blpop java n:堵塞n秒,出队时若为空则堵塞指定时间,有内容会立刻结束
--lpushx:对指定内容校验是否存在
4、Set集合类型
? 常用功能
sadd :添加set类型数据
smembers :获取set类型数据
scard :获取条数
srem :删除数据
--set求交集
--sinter a b :共同元素
--sinterstore xxx a b:存放至xxx
-- smemebers xxx:遍历某集合
--差集:sdiff a b :不同元素
--sdiffstore xxx a b :差集存放
--sunionstore xxx a b :并集运算
--判断是否存在 sismember a xx :xx再a中是否存在
--smove a b xx:将a中xx移动到b中
--srem a xx;删除a中xx
--sadd a xx:添加xx至a中
5、SortedSet排序集合类型
? 常用功能
sorted set是通过分数值来进行排序的,分数值越大,越靠后。
zadd :添加sorted set类型数据
zrange :获取sorted set类型数据
zcard :获取条数
zrem :删除数据
zadd需要将Float或者Double类型分数值参数,放置在值参数之前
--sorted set
--zcount :统计范围内个数
--zincrby:增加(可以做排行榜)
--zrevrange :降序
--zrange:正序
6、其他常用命令
Set存放json数据:
set json "{\"name\":\"lisi\",\"address\":\"shanghai\"}"
指定时间过期
EXPlRE <key> <ttl> :用于将键 key 的生存时间设置为 ttl 秒。
PEXPIRE <key> <ttl> :用于将键 key 的生存时间设置为 ttl 毫秒。
EXPIREAT <key> < timestamp> :用于将键 key 的过期时间设置为 timestamp 所指定的秒数时
间戳。
PEXPIREAT <key> < timestamp > :用于将键 key 的过期时间设置为 timestamp 所指定的毫秒
数时间戳。
TTL :获取的值为-1说明此 key 没有设置有效期,当值为-2时证明过了有效期。
set demo test ex 10
ttl demo
方法一:
方法二:expire
|