Redis

Redis :是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis特点:

1.性能极高 :Redis能读的速度是110000次/s,写的速度是81000次/s 。

2.数据类型丰富:Redis支持String,Hash,List,Set  及 Ordered Set  数据类型操作。

3.原子性:其所有的操作都是有原子性的。

4.丰富的特性:Redis还支持 publish/subscribe, 通知, key 过期等等特性。

5.高速读写:redis使用自己实现的分离器,代码量很短,没有使用lock(MySQL),因此效率非常高。

总结:

Redis:是一个简单的,高效的,分布式的,基于内存的缓存工具。

架设好服务器后,通过网络连接(类似数据库),提供Key-Value式缓存服务。

简单,是Redis突出的特色。

简单可以保证核心功能的稳定和优异。

 Redis的应用场景

企业级开发中:

可以用作数据库、缓存、热点数据(经常会被查询,但是不经常被修改或者删除的数据)

和消息中间件等大部分功能。

redis常用的场景:

1、缓存         2、排行榜        3、计数器        4、分布式会话        5、分布式锁        6、 社交网络        7、最新列表

 Redis 缺点:

持久化:Redis直接将数据存储导内存中,要将数据保存导磁盘上,有两种方法实现:(1)定时快照:每个一段时间将整个数据库写到磁盘上,每次均写是写全部数据,代价非常高。(2)基于语句追加:只追加变化的数据。但是追加的log可能过大,同时所有的操作均重新执行一遍,回复速度慢。

耗内存,占用内存过高。

redis数据结构:

1.字符串(strings)

strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型。


set mystr "hello world!" //设置字符串类型
get mystr //读取字符串类型

字符串类型的用法就是这么简单,因为是二进制安全的,所以完全可以把一个图片文件的内容作为字符串来存储。


2.字符串列表(lists)

lists,翻译成中文叫做 “列表” redis中的lists在底层实现上并不是数组,而是链表,也就是说对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。

应用:

1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
2.利用LRANGE还可以很方便的实现分页的功能。
3.在博客系统中,每片博文的评论也可以存入一个单独的list中。


3.字符串集合(sets)

sets:集合,是一种无序的集合,集合中的元素没有先后顺序。

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。


4.有序字符串集合(sorted sets)

sorted sets:有序集合中的每个元素都关联一个序号(score),这是排序的依据。


5.哈希(hashes)

hashes:即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

redis持久化:

redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;

AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。

scala操作Redis:

Maven导包

   <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.9.0</version>
    </dependency>

创建链接

val jedis = new Jedis("192.168.137.33", 6379)

//放值
jedis.set(k,v)

//取值
val str: String = jedis1.get(k)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值