JAVA 中应用 Redis
redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
redis 与其他 key-value 缓存产品有以下三个特点:
1) 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2) redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list set zset hash 等数据结构的存储。
3) redis 支持数据备份,即 master-slave 模式的数据备份。
redis 优点:
1)性能极高 读的速度是 110000 次 /s 写的速度是 81000 次 /s
2) 丰富的数据类型 redis 支持二进制案例的 string、 list、 hash、 set、ordered set 数据类型操作。
3) 原子 redis 所有操作都是原子性的,要么成功要么失败完全不执行。单个操作是原子性,多个操作也支持事务,即原子性,通过 multi 和 exec 指令包起来。
redis 通常被称为数据结构服务器,因为值(value)可以是字符串(string) 哈希(map) 列表(list)集合(sets) 有序集合(sorted sets)等类型。
1. 启动 redis 服务时,出现如下图:
解决方法:
删除 E:\redis 文件夹下的 *.rdb 文件,重启 redis 容器即可
成功启动 redis 服务:
客户端命令
以下主要讲 Java 中使用 jedis 库操作 redis。
一。以下摘自百度百科:
1. 什么是 Redis
Redis 是由意大利人 Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis 全称为:Remote Dictionary Server(远程数据服务),该软件使用 C 语言编写,Redis 是一个 key-value 存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
2. Redis 特点
Redis 以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个 256 字节字符串为例,它的读取速度可高达 110000 次 /s,写速度高达 81000 次 /s。
Redis 跟 memcache 不同的是,储存在 Redis 中的数据是持久化的,断电或重启后,数据也不会丢失。因为 Redis 的存储分为内存存储、磁盘存储和 log 文件三部分,重启后,Redis 可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis 才能实现持久化。
Redis 支持主从模式,可以配置集群,这样更利于支撑起大型的项目,这也是 Redis 的一大亮点。
3. Redis 应用场景,它能做什么
众多语言都支持 Redis,因为 Redis 交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的 I/O 开销,更重要的是可以极大提升速度。
拿大型网站来举个例子,比如 a 网站首页一天有 100 万人访问,其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗 100 万次数据库请求。上面已经说过,Redis 支持丰富的数据类型,所以这完全可以用 Redis 来完成,将这种热点数据存到 Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
总之,Redis 的应用是非常广泛的,而且极有价值,真是服务器中的一件利器,所以从现在开始,我们就来一步步学好它。
二 。 jedis 是官方推荐的,使用 Java 操作 redis 的类库,推荐大家使用 maven 去构建项目,maven 所需的 jedis 依赖如下:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
其实这个依赖只有 3 个 jar 包,jedis-2.9.0.jar,commons-pool-1.6.jar,commons-pool2-2.4.2.jar,后面的两个 common 的 pool 包,是配置 jedis 的连接池用的,如果不想使用连接池,那么只要导入 jedis-2.9.0.jar 就够了。
1.java 中 简单的 redis 连接示例
左图 为连接代码 右图为 运行结果
2. 初始化 redis 连接池
此处 是连接池的初始化配置。
从连接池中获取连接的时候,运行报错如下:
解决方式:
主要是由于服务启动的方式 。具体参考以下博文。
http://blog.csdn.net/u010011737/article/details/51149324
http://blog.csdn.net/rchm8519/article/details/48347797
Windows 下使用 redis requirepass 认证不起作用
1. 设置密码
1)命令行的形式去修改
2) 修改安装目录下的 redis.Windows.conf 配置文件,找到 #requirepass footbared , 去掉注释,变成 requirepass mypassword
ps: 重启之后,没有起作用,在可会断,输入命令 config get requirepass 会出现
2. 创建 redis-server.exe 的快捷方式,右键快捷方式属性,在目标后面增加 redis.windows.conf 这里很关键,虽然之前我们修改了 .conf 文件,但是 exe 却没有使用这个 conf
所以 我们需要手动指定一下 exe 按照修改后的.conf 运行。
redis 密码相关 可参考以下博文:
http://blog.csdn.net/lxpbs8851/article/details/8136126
修改成功密码以后 重启 就可用