Redis数据库简介:
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3.原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
下载地址:https://github.com/MSOpenTech/redis/releases。
安装教程:http://www.runoob.com/redis/redis-install.html
数据类型:
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
(一)String(字符串):
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
(二)Hash(哈希):
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
(三)List(列表):
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
(四)Set(集合):
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
(五)zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
下面是Java操作redis数据库实例:
我创建的项目是Maven项目,所以Maven项目下的pom.xml配置为:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.redis</groupId>
<artifactId>redis1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>1.0.2</version>
</dependency>
<!-- <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency> -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
package com.redis;
import java.util.Iterator;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import org.redisson.Config;
import org.redisson.Redisson;
/**
* 连接redis服务器、保存读取concurrentMap对象、保存读取set对象和保存读取Queue对象
* @author dell
*
*/
public class RedisExample {
public static void main(String[] args) {
//初始化
Config config = new Config();
config.setConnectionPoolSize(10);
config.addAddress("127.0.0.1:6379");
Redisson redisson = Redisson.create(config);
System.out.println("redis连接成功!");
//1.测试concurrentMap,put方法的时候就会同步到redis中
ConcurrentMap<String,Object> map = redisson.getMap("FirstMap");
map.put("liuhefei", "男");
map.put("xuyi","女");
map.put("yuyun","女");
ConcurrentMap resultMap =redisson.getMap("FirstMap");
System.out.println("resultMap=" + resultMap.keySet());
//2.测试set集合
Set mySet = redisson.getSet("MySet");
mySet.add("霜花似雪");
mySet.add("美女");
mySet.add("帅哥");
Set resultSet = redisson.getSet("MySet");
Iterator<String> it = resultSet.iterator();
while(it.hasNext()){
String str = it.next();
System.out.print(str+" ");
}
System.out.println("\n resultSet=" + resultSet.iterator());
System.out.println("resultSet=" + resultSet.size());
//3。测试Queue队列
Queue myQueue = redisson.getQueue("FirstQueue");
myQueue.add("北京");
myQueue.add("shanghai");
myQueue.add("kunming");
myQueue.peek();
myQueue.poll();
Queue resultQueue = redisson.getQueue("FirstQueue");
System.out.println("resultQueue= " + resultQueue);
//Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。
//关闭连接
redisson.shutdown();
}
}
结果:
可视化工具中:
redis可视化客户端下载地址:https://redisdesktop.com/download
更多精彩内容下次分享!感谢您的支持!