redis

redis

1.redis概述

  1. 概念
redis是一款高性能的NOSQL系列的非关系型数据库
2.什么是NOSQL
        NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。
		随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
3.什么是redis?
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis	的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色,Redis的官网: https://redis.io/
4.redis的特性

Redis 与其他 key - value 缓存产品有以下三个特点:

①、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

②、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

③、Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

①、性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

②、丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

③、原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

④、丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

总结:

    关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,

	让NoSQL数据库对关系型数据库的不足进行弥补。

	一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据

2.内容介绍

1.命令操作
1. redis的数据结构:
		* redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
			* value的数据结构:
				1) 字符串类型 string
				2) 哈希类型 hash : map格式  
				3) 列表类型 list : linkedlist格式。支持重复元素
				4) 集合类型 set  : 不允许重复元素
				5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序

使用redis存取String类型的值:

SET key value 保存一个值					key表示字符串的名称,value表示值
	保存复杂的字符串value是使用引号: set msg "hello word"
get key 获取一个值
MSET key value [key value ...]  保存多个值
MGET key [key ...] 获取多个值 
APPEND key value 在原有的字符串上追加一段内容

使用redis往list集合中存取值:

LPUSH key value [value ...] 	 向集合的头部保存一个值						key表示集合名称
LRANGE key start stop   lrange list01 0 -1  获取集合中所有的值
LPOP key  从左边弹出集合头部元素
RPOP key  从右边弹出头部元素
LREM key count value  移除指定count个数的value值
LINDEX key index 	根据索引获取值

使用redis往map集合中存取值

HSET key field value   向map中保存一个值,key表示map集合名称,field表示map集合中的key
HGET key field  根据键获取一个值
HDEL key field  根据键删除一个值
HMSET key field value [field value ...]	 保存多个值
HMGET key field [field ...] 		获取多个值
HGETALL key	 获取所有的key和value值
HLEN key 获取所有map集合的长度

往set集合中存数据(不会存重复的数据)

sadd key value1 value2 ....  添加一个或者多个数据
srem key value1 value2 ...   删除一个获取多个数据
smembers key                 获取set集合中所有元素
sismember key value          判断成员元素是否是集合的成员 

往有序set集合中存数据(不会存重复的数据,会根据分数排序)

 zadd key score value1 score value2 .....添加一个或者多个元素
 zrange key start stop [WITHSCORES] 从分数从小往大排序
 zrevrange key start stop [WITHSCORES] 从分数从大往小排序
 zrem key member  删除元素

**其他操作:获取所有的key :keys **

删除指定的key : del username;  删除username
查看所有的key : keys *
查看key对应value的类型: type key

3.JedisUtils工具类编写

/**
 * JedisPool工具类
 * 加载配置文件,配置连接池的参数
 * 提供获取连接的方法
 */
public class JedisPoolUtils {

    private static JedisPool jedisPool;

    static{
        //读取配置文件
        InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
        //创建Properties
        Properties pro = new Properties();
        try {
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取数据,设置到JedisPoolConfig中
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
        //初始化
        jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
    }

    /**
     * 获取连接方法
     */
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值