一.NoSQL
not only sql 非关系型数据库
二.为什么需要NoSQL?
Web1.0 无法互动的网站 web2.0用户可以
Web2.0出现的问题(1)高并发读写 (2)海量数据的高效率存储和访问(3)高可扩展性和高可用性三.主流NoSQL产品:
mongoDB,redis,neo4j
四.NoSQL数据库四大分类:
(1)键值存储(2)列存储(3)文档数据库(mongoDB)(4)图形数据库
五.redis支持的键值数据类型:
(1)字符串类型(2)散列类型(3)列表类型(4)集合类型(5)有序集合类型
六.应用场景:
(1)缓存 (2)任务队列 (3)网站访问统计(4)数据过期处理(5)分布式集群架构中session分离
七.安装
(1)安装gcc:yum install gcc-c++
(2)下载redis的源码包,上传到linux服务器,解压源码包(3)Make 编译(4)make install PREFIX=/usr/local/redis 安装八.启动redis
1.前端启动模式
/usr/local/redis/bin/redis-server
默认是前端启动模式,端口是6379
2.后端启动
从redis的源码目录中复制redis.conf到redis的安装目录。
修改配置文件
[root@bogon bin]# ./redis-server redis.conf
九.Jedis
1.介绍
jedis是redis官方首选的java客户端开发包
2.入门程序
@Test public void demo2(){ //1.获得数据库连接池对象 JedisPoolConfig config = new JedisPoolConfig(); //2.设置最大连接数 config.setMaxTotal(30); //3.设置最大空闲连接数-->连接池饱和状态最多20个连接数 config.setMaxIdle(10); //4.获得连接池 JedisPool jedisPool = new JedisPool(config, "47.94.148.93", 6379); //5.获得核心对象 Jedis jedis = null; try { //6.通过连接池获得连接 jedis = jedisPool.getResource(); //7.设置参数 jedis.set("name","张三"); //8.获得参数 System.out.println(jedis.get("name")); }catch (Exception e){ e.printStackTrace(); }finally { if(jedis!=null){ jedis.close(); } if(jedisPool!=null){ jedisPool.close(); } } }
3.redis数据结构
(1)String
set company zhada //创建get company //根据key获取valuegetset company baidu //获取value并设置del person //删除incr num //数字自增1incrby num 5 //数字加5append num 5 //追加5 eg:num为5 append 5后为55
(2)hash
hset myhash username kaka //添加键值对hget myhash username //根据建查值hgetall myhash //获取所有键值对hkeys myhash //获取所有键hvalues myhash //获取所有值hdel myhash usrname age //删除指定键值对del myhash //删除所有键值对hlen myhash //获取键值对个数
(3)list
lpush mylist a b c //从集合左侧开始插入数据 rpush mylist abc //从右侧开始添加lrange mylist 0 -1 //c b a 查看lpop mylist //弹出第一个元素rpop mylist //尾部弹出llen mylist //元素个数lset mylist 3 kaka //设置第三个位置的元素为kakalinsert mylist before kaka mu //在kaka元素前添加mu
(4)set(不可重复)
sadd myset a b c //添加元素srem myset b //删除元素smembers myset //列出所有元素sismember myset a //判断是否在集合中sinter myset myset2 //取交集sunion myset myset2 //取并集srandmember myset //随机取集合中的元素
(5)zset(sorted-set)
zadd mysort 70 zs 80 ls 90 ww //添加元素zccore mysort ls //查询lsui应的值zrange mysort 0 -1 //从小到大显示zrevrange 0 -1 //从大到小显示
4.通用操作
keys * //查看所有的keykeys my* //操卡逊my开头的keyrename company newcompany //重命名companyexpire company 1000 //设置超时时间1000秒type company //查看类型
十.redis特性
1.多数据库
一个redis实例最多可提供16个数据库,下标0-15,客户端默认连接0 号数据库
move myset 1 //把myset移到一号数据库selsct 1 //选择一号数据库
2.事务
multi //开启事务exec //提交事务discard //回滚事务
十.redis持久化
1.RDB持久化(Redis DataBase 快照形式)
RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 (特定时间替换)
2.AOF持久化(append only file)
将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部。并且是立即追加(1S)