推薦(免費):redis
#1 Redis簡介
什麼是Redis
Redis是完全開源免費的,遵守BSD協議,是⼀個⾼效能(NOSQL)的key-value資料庫。 Redis是⼀個開源的使⽤ANSI C語⾔編寫、⽀持⽹絡、可基於內存亦可持久化的⽇志型、Key-Value資料庫,並提供多種語⾔的API。
BSD是“Berkeley Software Distribution”的缩写,意思是“伯克利软件发⾏版”。 BSD开源协议是⼀个给与使⽤者很⼤⾃由的协议。可以⾃由的使⽤,修改源代码,也可以将修改后的代码作 为开源或者专有软件再发布。 BSD由于允许使⽤者修改或者重新发布代码,也允许使⽤或在BSD代码上开发商业软件发布和销售,因此是 对商业集成很友好的协议。 Linux:Ubuntu Redhat Centos
Nosql:
Nosql, 泛指⾮关系型数据库,Nosql即Not-only SQL,他作为关系型数据库的良好补充。随着互联⽹的 兴起,⾮关系型数据库现在成为了⼀个极其热⻔的新领域,⾮关系型数据库产品的发展⾮常迅速
2 Redis安裝
2.1 安裝前準備
Redis官⽹
官⽅⽹站:http://redis.io
中⽂官⽹:http://redis.cn
官⽅⽹站下載:http: //redis.io/download
Redis 安裝
Linux
Redis是C語⾔開發,安裝Redis需要先將官⽹下載的源碼進⾏編譯,編譯依賴GCC環境,如果沒有GCC環境,需要安裝GCC
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz $ tar xzf redis-5.0.5.tar.gz $ cd redis-5.0.5$ make
Windows
#直接解壓縮即可
建議redis安裝的⽬錄增加到環境變數
2.2 Redis的啟動
Linux啟動Redis服務端
進⼊對應的安裝⽬錄
cd /usr/local/redis
執⾏指令
./bin/redis-server
#Linux啟動Redis用戶端
./bin/redis-cli
Windows啟動Redis服務端
進⼊對應的安裝⽬錄,開啟指令窗⼝
執⾏指令
redis-server redis.window.conf
Windows啟動Redis客戶端
進⼊對應的安裝⽬錄,開啟指令窗⼝
執⾏指令
redis-cli
客戶端啟動成功之後的圖:
3 Redis核⼼配置⽂件Redis.conf
*1. Redis 默认不是以守护进程的⽅式运⾏,可以通过该配置项修改,使⽤yes启动守护进程 daemonize no2. 当客户端闲置多⻓时间后关闭连接(单位是秒) timeout 300*3. 指定Redis监听端⼝,默认端⼝为6379,作者在⼀⽚博⽂中解释了为什么选⽤6379作为默认端⼝,因 为6379在⼿机按键上MERZ对应的号码,⽽MERZ取⾃意⼤利歌⼿Alessia Merz的名字 port 6379*4. 绑定的主机地址 bind 127.0.0.1 5. 指定⽇志记录级别,Redis共⽀持四个级别:debug、verbose、notice、warning loglevel verbose6. 数据库数量(单机环境下),默认数据库为0,可以使⽤select <dbid>命令在连接上指定数据库id databases 16// ⾮常重要*7. RDB 持久化策略,指定在多⻓时间内,有多少次更新操作,就将数据同步到数据⽂件,可以多个条件 配合 save <seconds> <changes> Redis默认配置⽂件提供了三个条件 save 900 1 save 300 10 save 60 100008. 持久化⽂件名 dbfilename dump.rdb*9. 指定存储⾄本地数据库时是否压缩数据,默认为yes,Redis采⽤LZF(压缩算法)压缩,如果为了节 省CPU时间,可以关闭该选项,但会导致数据库⽂件变得巨⼤ rdbcompression yes*10. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis的时候需要通过 AUTH<password> 命令提供密码,默认关闭 requirepass foobared// AOF 配置*11. 指定是否在每次操作后进⾏⽇志记录,Redis在默认情况下是关闭的 appendonly no*12. AOF⽂件的名字 appendfilename "appendonly.aof"*13. aof策略,分为三种,always表示每次操作都会记录⽇志,everysec表示每秒记录⼀次⽇志,no表 示不记录⽇志 # appendfsync always appendfsync everysec # appendfsync no</password></changes></seconds></dbid>
Redis持久化總結:
RDB:是Redis默認的持久化機制。 RDB相當於照快照,保存的是⼀種狀態。 ⼏⼗GB的資料------>⼏KB
的快照
快照是預設的持久化⽅式,這種⽅式是就是將記憶體中資料以快照的⽅式寫入⼊到⼆進位⽂件中,預設的⽂件名為dump.rdb。
優點:快照保存資料極快、還原資料極快
適⽤於容災備份
缺點:⼩記憶體機器不適合讓⽤,RDB機制符合要求就會照快照,可能會遺失資料
快照條件:
1、伺服器正常關機時./bin/redis-cli shutdown
2、key滿⾜⼀定條件,會進⾏快照
AOF:由於快照⽅式是在⼀定時間間隔內做⼀次的,那麼如果redis意外down掉的話,就會丟失最後⼀次快照後的所有修改。如果應⽤要求不能遺失任何修改的話,可以採取aof持久化⽅式。
Append-only file:aof ⽐快照⽅式有更好的持久化性,是由於在使⽤aof持久化⽅式時,redis會將每⼀個收到的寫命令都透過write函數追加到⽂件中(預設appendonly.aof)。當redis重啟時會透過執⾏⽂件中保存的寫入指令來在記憶體中重建整個資料庫的內容。
有三種⽅式如下:(預設是每秒⼀次)
appendonly yes 啟⽤aof持久化⽅式
appendsync always 收到寫指令就⽴即寫⼊磁碟,最慢,但是保證完全的持久化
appendsync 每秒鐘寫⼊磁碟⼀次,在性能和持久化⽅⾯做了很好的折中
appendsync no 完全依賴os,性能最好,持久化沒有保證
4 Redis常⽤資料型別以及應⽤場景
Redis⽀持五種資料型別:String(字串),hash(哈希),list(列表),set(集合)以及zset(sorted set:有序集合) 等
#4.1 String
string是Redis最基本的類型, ⼀個key對應⼀個value,⼀個鍵最⼤能儲存512MB。
string類型是⼆進位安全的。意思是Redis的string可以包含任何資料。 ⽐如jpg圖⽚或序列化物件。
⼆進位安全是指,在傳輸資料時,保證⼆進位資料的資訊安全,也就是不被竄改、破解等,如果有被攻
擊,能夠及時偵測出來
跟之前的map ⾮常類似。 Value是字串。
SET key value GET key INCR 可以对应的key的数值(整型的数值)加⼀( 原⼦操作)INCRBY 给数值加上⼀个步⻓ SETEX expire 过期 SETNX not exist key不存在的时候再去赋值
應⽤場景:很常⻅的場景⽤於統計⽹站訪問數量 pv(Page view),當前在線⼈數等。 incr指令( 操 作)
4.2 List
Redis的列表允许⽤户从序列的两端推⼊或者弹出元素,列表由多个字符串值组成的有序可重复的序列,是链表结构,所以向列表两端添加元素的时间复杂度为o(1),获取越接近两端的元素速度就越快。这意味着即使是⼀个有⼏千万个元素的列表,获取头部或尾部的10条记录也是极快的。List中可以包含的最⼤元素数量是4294967295。
操作命令: LPUSH 后⾯的元素放在栈顶 LPOP 返回第⼀个元素,并且在列表上删除该元素 (栈顶) LLEN 返回当前的list列表的⻓度 LINDEX 返回当前的list的指定index下标的元素。没有返回nil,0表示栈顶的元素 LINSERT 插⼊的位置是按照index的顺序,Before的话得注意 index的值 LPUSHX 如果list存在,再去push LRANGE 可以⽅便的查看某个index范围内的list的值。输⼊的index是从0开始,显示的标号是从1开始的。 LREM 删除list⾥的指定的前⼏个(指定value的)元素 删除指定位置的元素:没有 LSET 设置指定的位置的元素的值 (修改) 输⼊的index是从0开始,显示的标号是从1开始的。
应⽤场景:1.最新消息排⾏榜。2.消息队列,以完成多程序之间的消息交换。可以⽤push操作将任务存
在list中(⽣产者),然后线程在⽤pop操作将任务取出进⾏执⾏。(消费者)
4.3 Hash (⼆维表)
Redis中的散列可以看成具有String key和String value的map容器,可以将多个key-value存储到⼀个key中。每⼀个Hash可以存储4294967295个键值对。
HSET HSET key field value 将哈希表 key 中的域 field 的值设为 value 。 如果 key 不存在,⼀个新的哈希表被创建并进⾏ HSET 操作。 如果域 field 已经存在于哈希表中,旧值将被覆盖。 HGET 返回哈希表 key 中给定域 field 的值。如果不存在,返回nil HEXISTS HEXISTS key field 查看哈希表 key 中,给定域 field 是否存在。 HGETALL HGETALL key 返回哈希表 key 中,所有的域和值。 在返回值⾥,紧跟每个域名(field name)之后是域的值(value),所以返回值的⻓度是哈希表⼤⼩的 两倍。 HKEYS HKEYS key 返回哈希表 key 中的所有值。 HLEN 返回哈希表 key 中值的数量。 HVALS HVALS key 返回哈希表 key 中所有域的值。 HINCRBY HINCRBY key field increment 为哈希表 key 中的域 field 的值加上增量 increment 。 增量也可以为负数,相当于对给定域进⾏减法操作。 如果 key 不存在,⼀个新的哈希表被创建并执⾏ HINCRBY 命令。 如果域 field 不存在,那么在执⾏命令前,域的值被初始化为 0 。 对⼀个储存字符串值的域 field 执⾏ HINCRBY 命令将造成⼀个错误。 本操作的值被限制在 64 位(bit)有符号数字表示之内。 HMGET HMGET key field [field ...]返回哈希表 key 中,⼀个或多个给定域的值。 如果给定的域不存在于哈希表,那么返回⼀个 nil 值。 因为不存在的 key 被当作⼀个空哈希表来处理,所以对⼀个不存在的 key 进⾏ HMGET 操作将 返回⼀个只带有 nil 值的表。 HMSET HMSET key field value [field value ...]同时将多个 field-value (域-值)对设置到哈希表 key 中。 此命令会覆盖哈希表中已存在的域。 如果 key 不存在,⼀个空哈希表被创建并执⾏ HMSET 操作。 HSETNX HSETNX key field value 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。 若域 field 已经存在,该操作⽆效。 如果 key 不存在,⼀个新哈希表被创建并执⾏ HSETNX 命令。
应⽤场景:例如存储、读取、修改⽤户属性(name,age,pwd等)
4.4 Set(⽆序集合)
SADD SADD key member [member ...]将⼀个或多个 member 元素加⼊到集合 key 当中,已经存在于集合的 member 元素将被忽略。 假如 key 不存在,则创建⼀个只包含 member 元素作成员的集合。 当 key 不是集合类型时,返回⼀个错误。 SMEMBERS SMEMBERS key 返回集合 key 中的所有成员。 不存在的 key 被视为空集合。 SISMEMBER SISMEMBER key member 判断 member 元素是否集合 key 的成员。 SCARD SCARD key 返回集合 key 的基数(集合中元素的数量)。 SPOP (弹出并从集合删除) SPOP key 移除并返回集合中的⼀个随机元素。 如果只想获取⼀个随机元素,但不想该元素从集合中被移除的话,可以使⽤ SRANDMEMBER 命 令。 SRANDMEMBER SRANDMEMBER key [count]如果命令执⾏时,只提供了 key 参数,那么返回集合中的⼀个随机元素。 随机取出 count个元素(不删除) SINTER SINTER key [key ...]返回⼀个集合的全部成员,该集合是所有给定集合的交集。 不存在的 key 被视为空集。 SINTERSTORE SINTERSTORE destination key [key ...]这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,⽽不是简单地返回结果 集。 如果 destination 集合已经存在,则将其覆盖。 SUNION SUNION key [key ...]返回⼀个集合的全部成员,该集合是所有给定集合的并集。 不存在的 key 被视为空集。 SUNIONSTORE SUNIONSTORE destination key [key ...]这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,⽽不是简单地返回结果 集。 如果 destination 已经存在,则将其覆盖。 SDIFF SDIFF key [key ...]返回⼀个集合的全部成员,该集合是所有给定集合之间的差集。 不存在的 key 被视为空集。 SDIFFSTORE SDIFFSTORE destination key [key ...]这个命令的作⽤和 SDIFF 类似,但它将结果保存到 destination 集合,⽽不是简单地返回结果 集。 如果 destination 集合已经存在,则将其覆盖。 destination 可以是 key 本身。 SMOVE SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合。SMOVE 是原⼦性操作。 SREM 删除 SREM key member [member ...]移除集合 key 中的⼀个或多个 member 元素,不存在的 member 元素会被忽略。 当 key 不是集合类型,返回⼀个错误。
应⽤场景:
1.利⽤交集求共同好友。
2.利⽤唯⼀性,可以统计访问⽹站的所有独⽴IP。
3.好友推荐的时候根据tag求交集,⼤于某个threshold(临界值的)就可以推荐。
4.5 SortSet(有序集合)
ZADD ZADD key score member [[score member] [score member] ...]将⼀个或多个 member 元素及其 score 值加⼊到有序集 key 当中。 ZCARD ZCARD key 返回有序集 key 的基数。 ZSCORE ZSCORE key member 返回有序集 key 中,成员 member 的 score 值。 如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。 ZCOUNT (闭区间) ZCOUNT key min max 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的 成员的数量。 关于参数 min 和 max 的详细使⽤⽅法,请参考 ZRANGEBYSCORE 命令。 ZINCRBY ZINCRBY key increment member 为有序集 key 的成员 member 的 score 值加上增量 increment 。 ZRANGE ZRANGE key start stop [WITHSCORES]返回有序集 key 中,指定区间内的成员。 其中成员的位置按 score 值递增(从⼩到⼤)来排序。 具有相同 score 值的成员按字典序(lexicographical order )来排列。 ZRANGEBYSCORE ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有 序集成员按 score 值递增(从⼩到⼤)次序排列。 根据指定的分值范围去查找 ZRANK (排名从0开始) ZRANK key member 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从⼩到⼤)顺序排 列。 ZREVRANGE ZREVRANGE key start stop [WITHSCORES]返回有序集 key 中,指定区间内的成员。 其中成员的位置按 score 值递减(从⼤到⼩)来排列。 具有相同 score 值的成员按字典序的逆序(reverse lexicographical order)排列。 ZREVRANGEBYSCORE ZREVRANGE key start stop [WITHSCORES]返回有序集 key 中,指定区间内的成员。 ZREVRANK ZREVRANK key member 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从⼤到⼩)排序。 排名以 0 为底,也就是说, score 值最⼤的成员排名为 0 。 使⽤ ZRANK 命令可以获得成员按 score 值递增(从⼩到⼤)排列的排名。 ZREM ZREM key member [member ...]移除有序集 key 中的⼀个或多个成员,不存在的成员将被忽略。 当 key 存在但不是有序集类型时,返回⼀个错误。 ZREMRANGEBYRANK ZREMRANGEBYRANK key start stop 移除有序集 key 中,指定排名(rank)区间内的所有成员。 区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。 ZREMRANGEBYSCORE ZREMRANGEBYSCORE key min max 移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
应⽤场景:可以⽤于⼀个⼤型在线游戏的积分排⾏榜,每当玩家的分数发⽣变化时,可以执⾏zadd更新
玩家分数(score),此后在通过zrange获取⼏分top ten的⽤户信息。
5 Redis的整合(Jedis) Java for Redis
5.1 导包
<dependency> <groupid>redis.clients</groupid> <artifactid>jedis</artifactid> <version>2.9.0</version></dependency>
5.2 配置
@Configurationpublic class RedisConfig { @Bean public Jedis jedis(){ Jedis jedis = new Jedis("localhost", 6379); return jedis; }}
5.3 使⽤
// 直接引⼊ @Autowiredprivate Jedis jedis;// 使⽤ 和在命令⾏客户端操作是⼀样的jedis.set();jedis.get();jedis.hset();jedis.hget();jedis.sadd();...
6 Springboot2.x中Redis进⾏连接(RedisTemplate)
RedisTemplate 简介,SpringBoot对Redis进⾏了⼀层模板化的封装,⽅便我们对对象进⾏操作。底层
在SpringBoot1.x的时候使⽤的是Jedis,在Springboot2.x后使⽤的是lettuce。
6.1 导包
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-redis</artifactid></dependency><!-- 序列化 --><dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-core</artifactid> <version>2.10.0</version></dependency> <dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-databind</artifactid> <version>2.10.0</version></dependency>
6.2 配置
@Configurationpublic class RedisConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); //定制化模板 StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringRedisSerializer); // 设置value JackSon序列化⽅式 Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper = new ObjectMapper(); // 对于不是基本类型的变量显示全类名 objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); //设置值的属性可⻅ objectMapper.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.AN Y); jsonRedisSerializer.setObjectMapper(objectMapper); redisTemplate.setValueSerializer(jsonRedisSerializer); return redisTemplate; }}
6.3 使⽤
redisTemplate.opsForValue().set(); redisTemplate.opsForHash().put(); redisTemplate.opsForList().leftPush(); redisTemplate.opsForSet().add(); redisTemplate.opsForZSet().add();
7 Springboot2.x中使⽤Redisson进⾏连接
Redisson:Redisson是⼀个在Redis的基础上实现的Java驻内存数据⽹格(In-Memory Data Grid)。它不仅提供了⼀系列的分布式的Java常⽤对象,还提供了许多分布式服务。其中包括( BitSet , Set ,
Multimap , SortedSet , Map , List , Queue , BlockingQueue , Deque , BlockingDeque ,Semaphore , Lock , AtomicLong , CountDownLatch , Publish / Subscribe , Bloom filter ,Remote service , Spring cache , Executor service , Live Object service , Scheduler service ) Redisson提供了使⽤Redis的最简单和最便捷的⽅法。Redisson的宗旨是促进使⽤者对Redis的关注分离(Separation of Concern),从⽽让使⽤者能够将精⼒更集中地放在处理业务逻辑上。
开源地址:https://github.com/redisson/redisson
7.1 导包
<dependency> <groupid>org.redisson</groupid> <artifactid>redisson</artifactid> <version>3.5.7</version></dependency>
7.2 配置
@Configurationpublic class RedissonConfig { @Bean public RedissonClient getRedisson(){ Config config = new Config(); config.useSingleServer().setAddress("redis://localhost:6379"); return Redisson.create(config); }}
7.3 使⽤
参考命令匹配列表
8 Redis内存淘汰策略
Redis官⽅给的警告,当内存不⾜时,Redis会根据配置的缓存策略淘汰部分的Keys,以保证写⼊成功。当⽆淘汰策略时或者没有找到适合淘汰的Key时,Redis直接返回 out of memory错误。
最⼤缓存配置
在Redis中,允许⽤户设置的最⼤使⽤内存⼤⼩
maxmemory 512G
Redis提供8种(5.0以后)数据淘汰策略:
- volatile-lru:从已设置过期时间的数据集中挑选最近最少使⽤的数据淘汰
- volatile-lfu:从已设置过期的Keys中,删除⼀段时间内使⽤次数最少使⽤ 的key
- volatile-ttl:从已设置过期时间的数据集中挑选最近将要过期的数据进⾏淘汰
- volatile-random:从已设置过期时间的数据集中随机选择数据淘汰
- allkeys-lru:从数据集中挑选最近最少使⽤的数据淘汰
- allkeys-lfu:从所有的keys中,删除⼀段时间内使⽤次数最少的key
- allkeys-random:从数据集中随机选择数据淘汰
- no-enviction(驱逐):禁⽌驱逐数据(不采⽤任何淘汰策略。默认即此配置),内存不⾜时,针对写操作,返回错误信息
建议:了解了Redis的淘汰策略之后,在平时使⽤时应尽量主动设置/更新key的expire时间,主动剔除不活跃的旧数据,有助于提升查询性能
以上是深入分析Redis的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

redis error就是redis数据库和其组合使用的部件出现错误,这个出现的错误有很多种,例如Redis被配置为保存数据库快照,但它不能持久化到硬盘,用来修改集合数据的命令不能用。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。