什么是nosql
not only sql 泛指 非关系型数据库
为什么需要nosql
互联网网站存在的问题:
1.对数据库高并发读写的需求
2.对海量数据的高效率存储和访问的需求
3.对数据库的高可扩展性和高可用性的需求
nosql可以解决这些问题
nosql数据库的四大分类:
键值对存储数据库(redis)
内容缓存,主要用于处理大量数据的高访问负载
列存储数据库
文档型数据库(MongoDB)
图形数据库
nosql特点
1.易扩展
2.大数据量,高性能
3.灵活的数据模型
4.高可用
什么是redis
redis是c语言开发的一个开源的高性能键值对数据库,通过提供各种键值对数据类型来适应不同场景下的存储需求
redis应用场景
缓存(数据查询,短连接,新闻内容,商品内容)
聊天的在线好用列表
任务队列(秒杀,抢购,12306等等)
应用排行榜
网站访问统计
数据过期处理
分布式集群架构中的session分离
Redis的安装
Redis是c语言开发的。
安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yuminstall gcc-c++
安装步骤:
第一步:redis的源码包上传到linux系统。
第二步:解压缩redis。
第三步:编译。进入redis源码目录。make
第四步:安装。makeinstall PREFIX=/usr/local/redis
PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
连接redis
redis的启动:
前端启动:在redis的安装目录下直接启动redis-server
[root@localhost bin]# ./redis-server
后台启动:
把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/
修改配置文件:
[root@localhost bin]# ./redis-serverredis.conf
查看redis进程:
[root@localhost bin]# ps aux|grep redis
root 5190 0.1 0.3 33936 1712 ? Ssl 18:23 0:00 ./redis-server*:6379
root 5196 0.0 0.1 4356 728 pts/0 S+ 18:24 0:00 grep redis
Redis-cli
[root@localhost bin]# ./redis-cli
默认连接localhost运行在6379端口的redis服务。
[root@localhost bin]# ./redis-cli -h192.168.25.153 -p 6379
-h:连接的服务器的地址
-p:服务的端口号
关闭redis:[root@localhost bin]# ./redis-clishutdown
或者通过kill -9 【端口号】杀死进程
redis键值数据类型:
1.字符串类型String:
key-value(做缓存)
Redis中所有的数据都是字符串。命令不区分大小写,key是区分大小写的。Redis是单线程的。Redis中不适合保存内容大的数据。
get、set、
incr:加一(生成id)
Decr:减一
2.散列类型Hash:
key-fields-values(做缓存)
相当于一个key对于一个map,map中还有key-value
使用hash对key进行归类。
Hset:向hash中添加内容
Hget:从hash中取内容
3.列表类型list
有顺序可重复
192.168.25.153:6379> lpush list1 a b c d
(integer) 4
192.168.25.153:6379> lrange list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
192.168.25.153:6379> rpush list1 1 2 3 4
(integer) 8
192.168.25.153:6379> lrange list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"
8) "4"
192.168.25.153:6379>
192.168.25.153:6379> lpop list1
"d"
192.168.25.153:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
7) "4"
192.168.25.153:6379> rpop list1
"4"
192.168.25.153:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
192.168.25.153:6379>
4.集合类型Set
元素无顺序,不能重复
192.168.25.153:6379> sadd set1 a b c c cd
(integer) 4
192.168.25.153:6379> smembers set1
1) "b"
2) "c"
3) "d"
4) "a"
192.168.25.153:6379> srem set1 a
(integer) 1
192.168.25.153:6379> smembers set1
1) "b"
2) "c"
3) "d"
192.168.25.153:6379>
还有集合运算命令,自学。
5.有序集合类型SortedSet(zset):
有顺序,不能重复
192.168.25.153:6379> zadd zset1 2 a 5 b1 c 6 d
(integer) 4
192.168.25.153:6379> zrange zset1 0 -1
1) "c"
2) "a"
3) "b"
4) "d"
192.168.25.153:6379> zrem zset1 a
(integer) 1
192.168.25.153:6379> zrange zset1 0 -1
1) "c"
2) "b"
3) "d"
192.168.25.153:6379> zrevrange zset1 0-1
1) "d"
2) "b"
3) "c"
192.168.25.153:6379> zrange zset1 0 -1withscores
1) "c"
2) "1"
3) "b"
4) "5"
5) "d"
6) "6"
192.168.25.153:6379> zrevrange zset1 0-1 withscores
1) "d"
2) "6"
3) "b"
4) "5"
5) "c"
6) "1"
192.168.25.153:6379>
Key命令
设置key的过期时间。
Expire key second:设置key的过期时间
Ttl key:查看key的有效期
Persist key:清除key的过期时间。Key持久化。
192.168.25.153:6379> expire Hello 100
(integer) 1
192.168.25.153:6379> ttl Hello
(integer) 77
Redis的所有数据都是保存到内存中的。