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基础

五.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的安装目录。
修改配置文件

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

相关推荐