redis基础
一.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获取value getset company baidu //获取value并设置 del person //删除 incr num //数字自增1 incrby num 5 //数字加5 append 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 //设置第三个位置的元素为kaka linsert 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 * //查看所有的key keys my* //操卡逊my开头的key rename company newcompany //重命名company expire 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)
3.无持久化
4.同时RDB和AOF
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04