edis

阅读 / 问答 / 标签

Spring Data Redis两个问题:内存泄露和并发 - europace

我们最近将会话管理从 MongoDB 迁移到了 Redis。迁移本身是由我们使用 MongoDB 的经验推动的,它不能特别好地处理高频率更新和更频繁地读取。另一方面,Redis 被称为经过验证的存储,可以准确处理该用例。 数据库迁移并不总是那么容易,因为我们需要学习其他服务的新模式、最佳实践和怪癖。我们的目标是让我们的 Java 服务层尽可能简单,使其稳定且面向未来:会话管理当然是具有相当稳定功能集的服务之一,并且不会经常触及其代码。因此,对于几年后窥探它的任何人来说,保持它的简单易懂是一个重要方面。 我们面临两个问题: 本文总结了我们在使用 Spring Data 作为持久层的瘦 Java 服务中采用 Redis 的经验。 带有二级索引和 EXPIRE/TTL 的 Spring Data Redis 在 Redis 中采用 Spring Data可直接开始:您需要的只是 Gradle 或 Maven 构建的依赖项以及@EnableRedisRepositoriesSpring Boot 应用程序中的注释。Spring Boot 的大多数默认设置都是有意义的,并且可以让您非常顺利地运行 Redis 实例。 但是会遭遇:Redis内存使用量不断增长的问题,下面看看这个认识过程: 我们由该存储库管理的实体也开始变得尽可能简单: 您会注意到我们选择对ttl属性建模,该属性被@TimeToLive转换为 EXPIRE 实体。我们不想手动跟踪过期会话,但希望 Redis 透明地删除过期会话。该ttl会定期刷新用户活动期间,如果手工删除,可能会被注销。 当用户实际按下注销按钮时会发生什么,或者我们如何禁用用户帐户并使正在运行的会话无效?简单:我们也有一个userId作为会话数据SessionData的一部分,并且可以执行以userId查询查找每个会话。上述类型所需的更改如下所示: SessionDataCrudRepository: SessionData: @Indexed注解在 Spring Data 中触发了一个特殊的行为:该注解实际上告诉 Spring Data在实体上创建和维护另一个索引,以便我们可以根据给定userId查询SessionData. 但是,二级索引和实体自动到期的组合使设置变得更加复杂。当引用的实体被删除时,Redis 不会自动更新二级索引,因此 Spring Data 需要处理这种情况。 然而,Spring Data 不会经常查询 Redis 的过期实体(键),这就是为什么 Spring Data 依赖于 R Redis Keyspace Notifications for expiring keys 所谓的 Phantom Copies( 幻影副本 )来失效过期键: 当到期时间设置为正值时,将运行相应的 EXPIRE 命令。除了保留原始副本外,Redis 中还保留了一个幻影副本,并设置为在原始副本之后 5 分钟过期。这样做是为了使 Repository 支持发布 RedisKeyExpiredEvent,只要一个键过期 expiring key ,就会在 Spring 的 ApplicationEventPublisher 中间保存过期的值,即使原始值已经被删除。 下一段有一个小细节需要注意: 默认情况下,初始化应用程序时禁用 expiring keys 侦听器。可以在 @EnableRedisRepositories 或 RedisKeyValueAdapter 中调整启动模式,以使用应用程序或在第一次插入具有 TTL 的实体时启动侦听器。有关可能的值,请参阅 EnableKeyspaceEvents。 遗憾的是,当时我们还没有阅读到这点。这就是为什么我们体验到启用EXPIRE禁用的expiring keys侦听器以及不断增长的二级索引的效果的原因。长话短说:我们观察到越来越多的键和不断增长的内存使用量 - 直到达到 Redis 的内存限制。 检查 Redis 键可以很明显地找到配置错误的位置,最终启用键空间事件的注释@EnableRedisRepositories使我们修复了内存泄露。 我们还禁用了 的自动服务器配置notify-keyspace-events property,因为我们在服务器端启用了该设置: 我们还必须手动清理陈旧的数据,所以我们还要提一下,在处理大型数据集时,您应该总是更选择 SCAN 而不是KEYS。Netflix 的 nf-data-explorer 可能会有所帮助,如果您不喜欢使用本机redis-cli. 并发读取和写入期间缺少实体 随着内存使用量不断增长的问题得到解决,我们最终将新服务作为我们会话的主要来源。 当请求击中我们的安全链时,我们总是验证用户的会话是否有效。这些验证是在会话管理中的简单查找sessionId。通常,404 NOT FOUND会话管理的状态指示sessionId无效(未知)或会话已过期(并被 Redis 删除)。 除了使用新 API 的应用程序中的一些相关更改外,我们还观察到了另一种奇怪的行为:无法找到某些会话,尽管我们 100% 确定会话应该仍然有效(已知且未过期)。在会话查找失败后,大多数重试都成功了,所以我们知道数据没有丢失,只是无法找到。 我们无法主动重现错误行为,收集日志、指标和跟踪也没有起到作用。在此过程中,我们添加了缓存和其他解决方法,并进行了一些更改以改进整体行为,但我们实际上并未解决该问题。 如果您仔细阅读本文的第一部分,您可能还记得有关我们刷新ttl. 我们不仅刷新ttl,而且还刷新作为SessionData的一部分lastResponse时间戳: 因此,让我们更详细地了解有关会话管理的请求处理。用户发送一个请求,以及一个sessionId,表明他们已登录。我们使用它执行查找sessionId以验证用户的会话。如果会话被认为是有效的,则应用程序可以继续执行请求的操作。应用程序处理完请求后,安全链会定期更新会话,重置ttl和写入当前lastResponse时间戳。通常,用户执行多个请求——可能不是真正的人,而是在浏览器中运行的前端应用程序。该前端应用程序并不真正关心它发送新请求的频率,因此我们可以假设多个请求可能同时到达我们的后端。 正在验证多个请求。多个请求触发会话刷新以及SessionData的写操作. 我们仍然使用 Spring DataCrudRepository来读取和更新会话,使用以下代码: 有时,repository.findById(...)没有产生任何东西,所以我们专注于那部分。不过,问题是由repository.save(...)电话引发的。经过几周的谷歌搜索并盯着日志和跟踪,我们发现了refreshSessionTtl和getSession调用之间的相关性。 互联网上的许多文章已经训练我们将 Redis 视为单线程服务,按顺序执行每个请求。谷歌搜索“spring data redis concurrent writes”,我们找到了stackoverflow和 spring-projects/spring-data-redis/issues/1826 中的问题,在那里描述甚至解释了我们的问题 - 以及修复. 长话短说:Spring Data 将更新实现为DEL和HMSET两个步骤时,没有任何事务保证。换句话说:通过 CrudRepositories 更新实体不提供原子性。我们的HGETALL请求有时恰好发生在DEL和之间HMSET,导致空结果,或者有时有结果,但结果为 负ttl 。 我们的问题现在可以通过集成测试重现并使用 PartialUpdate . 所以上面的实现改为: 概括 过期键、二级索引和将所有魔法委托给 Spring Data Redis 的组合需要正确配置键空间事件侦听器。否则,由于幻影副本,您使用的内存会随着时间的推移而增长。考虑@EnableRedisRepositories(enableKeyspaceEvents = ON_STARTUP)在您的应用中使用类似的配置。 在并发读取和更新的环境,提防Spring Data的CrudRepository工具的更新的过程分为两个步骤DEL和HMSET。如果您观察到零星丢失的键或结果为负值TTL,则您可能遇到了并发问题。检查您的写入操作并考虑使用 PartialUpdate和 Spring Data 的RedisKeyValueTemplate update方法更新需要改变的属性 。

redis 怎样监听一个key expire

redis 有一个keys命令。 语法:KEYS pattern 说明:返回与指定模式相匹配的所用的keys。 该命令所支持的匹配模式如下: (1)?:用于匹配单个字符。例如,h?llo可以匹配hello、hallo和hxllo等; (2)*:用于匹配零个或者多个字符。例如,h*llo可以匹配hllo和heeeello等; (3)[]:可以用来指定模式的选择区间。例如h[ae]llo可以匹配hello和hallo,但是不能匹配hillo。 同时,可以使用“/”符号来转义特殊的字符

redis里怎样设置过期时间

通过EXPIRE 命令或者PEXPIRE 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间( Time To Live , TTL) ,在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键:redis> SET key valueOKredis> EXP 工RE key 5(integer) 1redis> GET key // 5 秒之内"value"redis> GET key // 5 秒之后(nil)注意SETEX 命令可以在设直一个字符串键的同时为键设直过期时间,因为这个命令是一个类型限定的命令(只能用于字符串键),但SETEX 命令设置过期时间的原理和EXPIRE命令设置过期时间的原理是完全一样的。与EXPlRE 命令和PEXPIRE 命令类似,客户端可以通过EXPlREAT 命令或PEXPlREAT命令,以秒或者毫秒精度给数据库中的某个键设置过期时间(expire time)。过期时间是一个UNIX时间戳,当键的过期时间来临时,服务器就会自动从数据库中删除这个键:redis> SET key valueOKredis> EXPIREAT key 1377257300(integer) 1redis> TIME1)"1377257296"2)"296543"redis> GET key // 1377257300 之前"value"redis> TIME1)"1377257303"2)"230656 "redis> GET key // 1377257300 之后(nil)TTL 命令和PTTL 命令接受一个带有生存时间或者过期时间的键,返回这个键的剩余生存时间,也就是,返回距离这个键被服务器自动删除还有多长时间:redis> SET key va1ueOKredis> EXPlRE key 1000(integer) 1redis> TTL key(integer) 997redis> SET another_key another_valueOK

Redis过期时间

1.0.0版本后可用 时间复杂度: O(1) 给一个 key 设置超时时间。在一个超时时间结束后,这个键将会被自动删除。一个拥有关联过期时间的键在Redis术语里通常被认为 不稳定的 。 只有删除或者覆盖键的内容的命令,包括 DEL , SET , GETSET 和所有的 *STORE 命令,才会把过期时间清除。这意味着从理论上讲,所有改变键上存储的值而不是使用新的值来替换的操作,都将会保持过期时间不变。例如,使用 INCR 增加一个键的值,使用 LPUSH 讲一个新的值放到列表中,或者使用 HSET 改变一个哈希的字段的值都将会使过期时间保持不变。 使用 PERSIST 命令将一个键变成持久化的键,过期时间也会被清除。 如果一个键被 RENAME 重命名,关联的生存时间将会被转移到新的键名上。 如果一个键被 RENAME 重命名,就像在一个已经存在的键 Key_A ,它被一个调用 RENAME Key_B Key_A 所覆盖,原始的 Key_A 是否关联过期时间是没关系的,新的键 Key_A 将会继承 Key_B 的所有特征。 注意,使用负数调用 EXPIRE / PEXPIRE ,或者使用过去的时间调用 EXPIREAT / PEXPIREAT 将会使键被删除,而不是过期(相应的,弹出的 key event 将会是 del ,而不是 expired )。 可以使用一个已经有过期时间集的键作为参数来调用 EXPIRE 。在这种情况下,一个键的生存时间已经 更新 为一个新值。对此很多应用,下面的 Navigation session 模式一节记录了一个例子。 在Redis 2.1.3之前的版本中,使用一个命令改变一个拥有过期时间的键的值,效果跟彻底移除这个键一样。这种语义是必须的,因为复制层的限制现在已经确定了。 EXPIRE 将会返回0,并且不会使用一个过期时间集合来改变一个键的过期时间。 特别的 返回数字 : redis> SET mykey "Hello" redis> EXPIRE mykey 10 redis> TTL mykey redis> SET mykey "Hello World" redis> TTL mykey redis> 想象你有一个网页服务,并且你对用户最近访问的N个页面有兴趣,这样每个临近的页面视图的执行时间不会超过前一个页面视图执行的60秒。理论上来讲,你可以认为用户访问的页面集合为 Navigation session ,其中就可以包含用户在寻找哪些他或她感兴趣的产品信息,因此你可以推荐关联的产品。 你可以非常容易的使用下面的策略在Redis中建模这种类型:每次用户访问一个页面你就调用下面的命令: 如果用户闲置超过60秒,这个键将会被删除,只有访问时间差值小于60秒的页面才会被记录。 这个模式可以很容易的修改为使用 INCR 做计数器来替代使用 RPUSH 的列表。 通常情况下创建Redis的键时不关联生存时间。这个键将会简单的一直生存,除非用户显示的删除它,例如使用 DEL 命令。 EXPIRE 家族命令能够把一个过期时间关联到一个给定的键,代价是这个键会使用额外的内存。当一个键设置了过期时间,Redis将会确保当指定的时间过去之后移除这个键。 一个键的生存时间可以被 EXPIRE 命令更新,或者被 PERSIST 命令完全移除(或其他严格相关的命令)。 在Redis2.4版本中,过期时间可能不是非常精确的,并且它可能是在0到1秒之间的出入。从Redis2.6版本开始,过期时间误差是从0到1毫秒。 键的过期信息以绝对的Unix时间戳形式保存(Redis2.6以及更新的版本毫秒内)。这意味着甚至当Redis实例未启动时时间就流走了。 为了过期时间能工作的很好,计算机时间必须保持稳定。如果你从两个时钟巨大不同步的计算机上移动一个RDB文件,有趣的事情将会发生(像所有的键在加载时变成过期)。 实际上运行中的实例将一直会检查计算机的时钟,举例来说,如果你给一个键设置1000秒的生存时间,然后在未来将你的计算机设置在2000秒以后,这个键将会立即失效,而不是持续1000秒。 Redis键将会通过两种方式过期:一个被动的方式,和一个主动的方式。 一个键的被动过期是很简单的,当一些客户端尝试访问它,然后这个键被发现超时了。 当然,这是不够的,因为有一些键将永远不会被再次访问。这些键无论如何都应该被过期。所以,Redis会定期的在过期的集合中随机范围内测试少量的键。所有的已过期的键将会被从键空间被删除。 这就是Redis会在每秒做10次的事情: 这是一个小概率的算法,基本的设想是我们的样本代表整个键空间,然后我们继续失效直到将要失效的键百分比小于25%。 这意味着在任何一个时刻,正在使用内存的已经过期的最大数量的键等于每秒最大写操作数量除以4. 为了获得正确的行为而不牺牲一致性,当一个键失效, DEL 操作会同时在AOF文件和附属的副节点执行。这种方式失效进程是在主实例集中的,也不会出现一致性错误。 然而,当副本已经连接到主节点后将不会独立的失效键(但将会等待来自主节点的 DEL ),他们仍将会获取数据集中的全部过期状态,所以当一个副本被选举为主节点后,它将能够独立的失效这些键,完全像一个主节点。

java设置 redis 失效时间多久

推荐一个博客说的非常细网页链接

至于为什么不使用redis的muti,expire,watch等机制

事务操作会锁表,锁库.不仔细写 容易有坑. 对研发人员的要求较高不然在大并发情况下 会把DB拖死所以互联网项目除了电商和金融,基本都是吧事务放在业务层写不会利用db提供的事务机制

redis有效期如何设置为半年

通过expire命令。redis有效期通过expire命令设置为半年,因为expire命令来设置key的过期时间。Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

如何设置redis中hash的field的expire

设置 hash 类型中的属性(字段)值 返回1,表示 新的属性 field_name field_value 被添加到 hash_key 的hash中; 返回0,表示 旧的属性 field_name 已经存在,且值被更新为 field_value。

redis设置下一年失效时间

方法一:1、打开EXPIRE命令。2、EXPIREkeyseconds--先设置好数据。3、然后再设置该key的过期时间。方法二:4、SETEXkeysecondsvalue--在设置数据的同时,可以直接设置过期时间。

redis expire 命令有什么好处

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下:redis通过expire命令来设置key的过期时间。语法:redis.expire(key, expiration)1. 在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。2. redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。3. 如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。4. redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。 也就是说 :redis.expire(key,expiration);redis.lpush(key,field,value);redis.get(key) //return nullredis2.1.3之后的版本里面没有这个约束,可以任意修改。redis.set(key,100);redis.expire(key,expiration);redis.incr(key)redis.get(key)//redis2.2.2 return 101; redis<2.1.3 return 1;5. redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。

redistemplate.expire为什么要设置失效时间

spring-data-redis 中的核心操作类是 RedisTemplate 可以看出 key 和 value 都是泛型的,这就涉及到将类型进行序列化的问题了 所就在 RedisTemplate 中还有几个 RedisSerializer~ 1)redisConnectionFactory()配置了如何连接Redsi服务器

redis expire 更新 会变吗

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下:redis通过expire命令来设置key的过期时间。语法:redis.expire(key, expiration)1. 在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。2. redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。3. 如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。4. redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。 也就是说 :redis.expire(key,expiration);redis.lpush(key,field,value);redis.get(key) //return nullredis2.1.3之后的版本里面没有这个约束,可以任意修改。redis.set(key,100);redis.expire(key,expiration);redis.incr(key)redis.get(key)//redis2.2.2 return 101; redis<2.1.3 return 1;5. redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。

redis的expire方法

EXPIRE key seconds(单位/秒) 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的 another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key 。

redis expire 0秒会怎么样

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下:redis通过expire命令来设置key的过期时间。语法:redis.expire(key, expiration)1. 在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。2. redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。3. 如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。4. redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。 也就是说 :redis.expire(key,expiration);redis.lpush(key,field,value);redis.get(key) //return null

Redis官方教程 Expire超时

EXPIRE key second 设置超时 key 。超时过期后,key将自动删除。在Redis术语中,通常认为具有超时的key是 不稳定的 。 只有删除或覆盖key内容的命令才能清除超时,包括 DEL , SET , GETSET 和所有 *STORE 命令。这意味着 改变 存储在key中的值而不用新key替换它的所有操作将使超时保持不变。举例来说,增加一键的值 INCR ,往列表推新值的,包括 LPUSH ,或改变了哈希的字段值 HSET ,都不会改变超时。 也可以清除超时,使用 PERSIST 命令将key重新转换为持久key。 如果使用 RENAME 重命名key,则相关的生存时间将转移到新key名称。 如果一个key被 RENAME 覆盖,比如,已经存在key Key_A ,被如下命令所覆盖, RENAME Key_B Key_A ,新key Key_A 将继承所有的 Key_B 的属性,与原始 Key_A 否有超时没有关系。 请注意,使用非正数的超时时间调用 EXPIRE / PEXPIRE 或 使用一个过去时间调用 EXPIREAT / PEXPIREAT ,将导致键被 删除 而不是过期(因此,发出的 键事件 将是 del ,而不是 expired )。 可以使用已经设置超时的key作为参数调用 EXPIRE 。在这种情况下,key的生存时间将 更新 为新值。有许多有用的应用程序,下面的 导航会话 模式部分中记录了一个示例 。 在之前的Redis 2.1.3版本中 ,使用命令更改key来使用超时设置更改key,具有完全删除key的效果。由于复制层中的限制现在已得到修复,因此需要使用此语义。 EXPIRE 将返回0并且不会更改具有超时设置的key的超时。 整数回复 ,具体为: 假如你有一个web服务,你需要记录用户最近浏览的N个页面,每个相邻页面的浏览时间不超过60s。 你可以用redis轻松实现,每次用户打开一个页面,执行如下命令: 如果用户60s没有操作,页面就会被删除,只有60s以内的页面会被记录。 通常,创建Redis key时没有相关的过期时间。key只会永远存在,除非用户以明确的方式将其 删除 ,例如使用 DEL 命令。 EXPIRE 家族命令能够给key设置超时时间,但是会使用一些额外的内存成本。当key设置了过期时,Redis将确保在指定的时间过后删除key。 可以使用 EXPIRE 和 PERSIST 命令(或其他严格相关的命令)更新或完全删除key生存时间。 在Redis 2.4中,到期可能不精确,误差可能在0到1秒之间。 从Redis 2.6开始,到期误差从0到1毫秒。 Key到期信息存储为绝对Unix时间戳(在Redis 2.6或更高版本的情况下以毫秒为单位)。这意味着即使Redis实例未处于活动状态,时间也在流动。 为了使到期效果良好,计算机时间必须稳定。如果您从两台计时器中移动RDB文件并在其时钟中使用大型desync,则可能会发生有趣的事情(例如加载时加载的所有键都将在加载时过期)。 即使运行实例也会检查计算机时钟,例如,如果您设置的key的生存时间为1000秒,然后将计算机时间设置为当前时间向后2000秒,key将立即过期,而不是持续1000秒。 Redis key以两种方式过期:被动方式和主动方式。 当某个客户端尝试访问key时,如果发现key超时,key被动过期。 当然这还不够,因为有过期的key永远不会被再次访问。这些key无论如何都应该过期,所以周期性地Redis会在具有过期设置的key中随机测试几个key。已经过期的所有key都将从key空间中删除。 具体来说,这就是Redis每秒做10次的事情: 这是一个简单的概率算法,基本上假设我们的样本代表整个key空间,我们继续到期,直到可能过期的key百分比低于25% 这意味着在任何给定时刻,使用内存的已经过期的最大key数量最大等于每秒最大写入操作量除以4。 为了在不牺牲一致性的情况下获得正确的行为,当key到期时,在AOF文件中合成 DEL 操作并通知所有副本节点。这样,到期过程集中在主实例中,并且不存在一致性错误。 但是,连接到主服务器的副本节点不会单独地使key过期,(但会等待来自主服务器的 DEL ),但它们仍将采用数据集中存在的过期的完整状态,因此当副本被选为主服务器时它将能够独立地使密钥到期,充分充当主人。

jedispoolconfig的settestonborrow是什么意思

redis之如何配置jedisPool参数JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了,在JedisPoolConfigmaxIdle:控制一个pool最多有多少个状态为idle的jedis实例;whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;testOnReturn:在return给pool时,是否提前进行validate操作;testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;其中JedisPoolConfig对一些参数的默认设置如下:testWhileIdle=trueminEvictableIdleTimeMills=60000timeBetweenEvictionRunsMillis=30000numTestsPerEvictionRun=-1

Jedis连接池配置参数

JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。 maxActive :控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted。 maxIdle :控制一个pool最多有多少个状态为idle(空闲)的jedis实例; whenExhaustedAction :表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种。 WHEN_EXHAUSTED_FAIL --> 表示无jedis实例时,直接抛出NoSuchElementException; WHEN_EXHAUSTED_BLOCK --> 则表示阻塞住,或者达到maxWait时抛出JedisConnectionException; WHEN_EXHAUSTED_GROW --> 则表示新建一个jedis实例,也就说设置的maxActive无用; maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛JedisConnectionException; testOnBorrow:获得一个jedis实例的时候是否检查连接可用性(ping());如果为true,则得到的jedis实例均是可用的; testOnReturn:return 一个jedis实例给pool时,是否检查连接可用性(ping()); testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义; timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数; numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数; minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义; softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义; lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列; 其中JedisPoolConfig对一些参数的默认设置如下: testWhileIdle=true minEvictableIdleTimeMills=60000 timeBetweenEvictionRunsMillis=30000 numTestsPerEvictionRun=-1

3分钟搞定springboot整合redis

不多说直接上代码: <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </exclusion> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加jedis客户端 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <!--spring2.0集成redis所需common-pool2--> <!-- 必须加上,jedis依赖此 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.5.0</version> </dependency> <!-- 将作为Redis对象序列化器 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> #Matser的ip地址 redis.hostName=172.16.44.148 #端口号 redis.port=6379 #如果有密码 redis.password= #客户端超时时间单位是毫秒 默认是2000 redis.timeout=10000 #最大空闲数 redis.maxIdle=300 #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal #redis.maxActive=600 #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性 redis.maxTotal=1000 #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。 redis.maxWaitMillis=1000 #连接的最小空闲时间 默认1800000毫秒(30分钟) redis.minEvictableIdleTimeMillis=300000 #每次释放连接的最大数目,默认3 redis.numTestsPerEvictionRun=1024 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 redis.timeBetweenEvictionRunsMillis=30000 #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个 redis.testOnBorrow=true #在空闲时检查有效性, 默认false redis.testWhileIdle=true package com.junsi.demo.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import com.junsi.demo.utils.RedisUtil; import redis.clients.jedis.JedisPoolConfig; /** * Redis配置类 * @author pzx * 2019年6月8日 */ @Configuration @PropertySource("classpath:redis.properties") public class RedisConfig { @Value("${redis.maxIdle}") private Integer maxIdle; @Value("${redis.maxTotal}") private Integer maxTotal; @Value("${redis.maxWaitMillis}") private Integer maxWaitMillis; @Value("${redis.minEvictableIdleTimeMillis}") private Integer minEvictableIdleTimeMillis; @Value("${redis.numTestsPerEvictionRun}") private Integer numTestsPerEvictionRun; @Value("${redis.timeBetweenEvictionRunsMillis}") private long timeBetweenEvictionRunsMillis; @Value("${redis.testOnBorrow}") private boolean testOnBorrow; @Value("${redis.testWhileIdle}") private boolean testWhileIdle; @Value("${spring.redis.cluster.nodes}") private String clusterNodes; @Value("${spring.redis.cluster.max-redirects}") private Integer mmaxRedirectsac; /** * JedisPoolConfig 连接池 * @return */ @Bean public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 最大空闲数 jedisPoolConfig.setMaxIdle(maxIdle); // 连接池的最大数据库连接数 jedisPoolConfig.setMaxTotal(maxTotal); // 最大建立连接等待时间 jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); // 逐出连接的最小空闲时间 默认1800000毫秒(30分钟) jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); // 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3 jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun); // 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); // 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个 jedisPoolConfig.setTestOnBorrow(testOnBorrow); // 在空闲时检查有效性, 默认false jedisPoolConfig.setTestWhileIdle(testWhileIdle); return jedisPoolConfig; } /** * @param jedisPoolConfig * @return */ @Bean public JedisConnectionFactory JedisConnectionFactory(JedisPoolConfig jedisPoolConfig){ JedisConnectionFactory JedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig); //连接池 JedisConnectionFactory.setPoolConfig(jedisPoolConfig); //IP地址 JedisConnectionFactory.setHostName("172.16.44.148"); //端口号 JedisConnectionFactory.setPort(6379); //如果Redis设置有密码 //JedisConnectionFactory.setPassword(password); //客户端超时时间单位是毫秒 JedisConnectionFactory.setTimeout(5000); return JedisConnectionFactory; } /** * 实例化 RedisTemplate 对象 * * @return */ @Bean public RedisTemplate<String, Object> functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); initDomainRedisTemplate(redisTemplate, redisConnectionFactory); return redisTemplate; } /** * 设置数据存入 redis 的序列化方式,并开启事务 * * @param redisTemplate * @param factory */ private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) { //如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can"t cast to String! redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // 开启事务 redisTemplate.setEnableTransactionSupport(true); redisTemplate.setConnectionFactory(factory); } @Bean(name = "redisUtil") public RedisUtil redisUtil(RedisTemplate<String, Object> redisTemplate) { RedisUtil redisUtil = new RedisUtil(); redisUtil.setRedisTemplate(redisTemplate); return redisUtil; } }

如何在 Go 语言中使用 Redis 连接池

1.在创建连接池之后,起一个 go routine,每隔一段 idleTime 发送一个 PING 到 Redis server。其中,idleTime 略小于 Redis server 的 timeout 配置。2.连接池初始化部分代码如下:p, err := pool.New("tcp", u.Host, concurrency) errHndlr(err) go func() { for { p.Cmd("PING") time.Sleep(idelTime * time.Second) } }() 3.使用 redis 传输数据部分代码如下:func redisDo(p *pool.Pool, cmd string, args ...interface{}) (reply *redis.Resp, err error) { reply = p.Cmd(cmd, args...) if err = reply.Err; err != nil { if err != io.EOF { Fatal.Println("redis", cmd, args, "err is", err) } } return } 4.其中,Radix.v2 连接池内部进行了连接池内连接的获取和放回,代码如下:// Cmd automatically gets one client from the pool, executes the given command // (returning its result), and puts the client back in the pool func (p *Pool) Cmd(cmd string, args ...interface{}) *redis.Resp { c, err := p.Get() if err != nil { return redis.NewResp(err) } defer p.Put(c) return c.Cmd(cmd, args...) } 这样,就有了系统 keep alive 的机制,不会出现 time out 的连接了,从 redis 连接池里面取出的连接都是可用的连接了。看似简单的代码,却完美的解决了连接池里面超时连接的问题。同时,就算 Redis server 重启等情况,也能保证连接自动重连。

Ignite和Redis的区别

Apache Ignite 内存数据组织框架是一个高性能、集成化和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时他还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能。

pledis出道几率?

作为Pledis的家族饭 一直觉得Pledis的艺人少而精。基本上不是颜好就是实力好。 明年Pledis要退出的17人男团 面对的市场就包括了中国 。但是Pledis近几年只在深圳举办了一场临时的选秀活动 所以目前的中国练习生应该不是很多的 。 我觉得Pledis已经开始把目光看向中国了 。如果楼亲你有颜有实力 在Pledis出道的可能性还是很大的。 Pledis旗下有孙丹菲 AfterSchool NU"EST 。HelloVenus(子公司)。孙丹菲算是韩国女solo里不错的吧 至少人家又是歌手又是演员。其他不是大火但人气也过得去啊。两个新团在今年出道的团里官咖人数不低的。

Pledis公司有什么组合

After school NU"EST Hello venus 孙丹菲Orange CaramelPledis17也会在不久出道哦~~

想到韩国当练习生 我觉得 pledis Entertainment不错 很有潜力 关键不知到细节 请亲们帮下忙

百度一下。。

如何将多个redis查询命令合并成一个执行

  Redis Pgmerge 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。  语法  redis Pgmerge 命令基本语法如下:  redis 127.0.0.1:6379> PFMERGE destkey sourcekey [sourcekey ...]  可用版本  >= 2.8.9  返回值  返回 OK。  实例  redis 127.0.0.1:6379> PFADD hll1 foo bar zap a(integer) 1redis 127.0.0.1:6379> PFADD hll2 a b c foo(integer) 1redis 127.0.0.1:6379> PFMERGE hll3 hll1 hll2OKredis 127.0.0.1:6379> PFCOUNT hll3(integer) 6redis>

怎么重建redis集群

1、关闭cluster全部节点2、删除所有nodes.conf文件3、开启全部节点4、依次flushall5、重建集群即可Share the post "Redis3重建Cluster"例子:redis集群启动失败案例部署Redis分布式集群时,出现了如下错误:moguang@ubsvr13:/opt/redis-unstable/src$ ./redis-trib.rb create 192.168.1.13:6379 192.168.1.15:6380 192.168.1.40:6381>>> Creating clusterConnecting to node 192.168.1.13:6379: OKConnecting to node 192.168.1.15:6380: OKConnecting to node 192.168.1.40:6381: OK>>> Performing hash slots allocation on 3 nodes...Using 3 masters:192.168.1.40:6381192.168.1.15:6380192.168.1.13:6379M: 225b7f54c67483f71955db78312a90c67941fff0 192.168.1.13:6379slots:10922-16383 (5462 slots) masterM: bca62c53e7f50d7c83dd418ed23e08fb8a4e9bb5 192.168.1.15:6380slots:5461-10921 (5461 slots) masterM: 47483c65a705025aab28ee74da210a2dce41bc41 192.168.1.40:6381slots:0-5460 (5461 slots) masterCan I set the above configuration? (type "yes" to accept): yes/usr/lib/ruby/gems/1.8/gems/redis-3.0.7/lib/redis/client.rb:97:in `call": ERR Slot 16011 is already busy (Redis::CommandError)from /usr/lib/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:2432:in `method_missing"from /usr/lib/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:37:in `synchronize"from /usr/lib/ruby/1.8/monitor.rb:242:in `mon_synchronize"from /usr/lib/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:37:in `synchronize"from /usr/lib/ruby/gems/1.8/gems/redis-3.0.7/lib/redis.rb:2431:in `method_missing"from ./redis-trib.rb:203:in `flush_node_config"from ./redis-trib.rb:571:in `flush_nodes_config"from ./redis-trib.rb:570:in `each"from ./redis-trib.rb:570:in `flush_nodes_config"from ./redis-trib.rb:820:in `create_cluster_cmd"from ./redis-trib.rb:1026:in `send"from ./redis-trib.rb:1026经检查,这是由于上一次配置集群失败时留下的配置信息导致的。 只要把redis.conf中定义的 cluster-config-file 所在的文件删除,重新启动redis-server及运行redis-trib即可。

高德地图calculatelinedistance是球面吗

大地线(geodesic)是指地球椭球面上连接两点的最短程曲线。大地线上每点的密切面(无限接近的3个点所构成的平面)都包含此点的曲面法线。因曲面法线互不相交,故为一条空间曲面曲线。在球面上,大圆弧(球面上的法截线)是对应的大地线。但在地球椭球面上,除两点均位于大地子午线或纬线上外,大地线均位于它两个端点的正反法截线之间。在椭球体面上进行测量计算时,应以两点间的大地线为依据,而在地面测得的方向和距离等,应归算成相应于椭球面上的方向和距离等。—百度百科绘制大地线,通过贝塞尔曲线(Bessel)计算得出的经纬度,然后使用Polyline绘制。

总出现Command line option syntax error[在我安装vcredist_x86.exe(C++2005)]时,该怎么办?谢谢了,

引起这问题的原因是,SQLServer的安装文件,放在中文目录下. 将SQLServer的安装文件,拷到英文目录,安装就OK 比如将: D:软件Sqlserver 中的"软件"去掉. 注: MDAC (Microsoft Data Access Components)是微软数据库访问组件,Netpise和许多利用数据库的软件都需要操作系统安装MDAC。很多用户的操作系统中已经存在了MDAC,有些是操作系统内置的、有些是其它应用程序安装的。 补充方法(未测试) 1.重装MDAC 2.修改注册表: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionsetup 删除ExceptionComponents 重启,安装. 很多时候不需要 第一步 操作。 在笔记本电脑安装SQL出现错误: command line option syntax error!type command /? for help 编程论坛 楼主 如题,我在网上搜了很多答案,都说是安装目录是中文引起的,可是我检查了好几遍我的安装目录的确是英文的!另说明:我的电脑是笔记本电脑,会不会与这个有关呢?系统刚刚重装过 编程论坛 1 个网友回答: /* 标题:SQL Server 2000 服务器安装剖析 作者:爱新觉罗.毓华 时间:2008-05-05 地点:广东深圳 */ 一、情况说明 SQL Server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的 安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以;而SQL Server 2000安装问题就比较大,时常 见到的问题如下: 1、配置服务器时中断. 2、注册 ActiveX 时中断. 3、显示到100%的时候中断. 4、提示:command line option syntax error, type command /? for help,继续安装,最后在配置服务器的时候出现:无法找到动态链接 SQLUNIRL.DLL于指定的路径…… 5、以前进行的程序创建了挂起的文件操作,运行安装程序前,必须重新启动 二、情况1,2,3的解决办法: 提醒:为避免误操作,先备份注册表和数据库进不了SQL Server 2000,可以备份C:Program FilesMicrosoft SQL ServerMssqlData (默认路径)文件夹的文件. 1)、先把SQL Server卸载(卸载不掉也没有关系,继续下面的操作); 2)、把Microsoft SQL Server文件夹整个删掉; 3)、运行注册表,删除如下项: HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server HKEY_LOCAL_MACHINESOFTWAREMicrosoftMssqlServer HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMssqlSERVER HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSQLSERVERAGENT HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMssqlSERVERADHELPER HKEY_CURRENT_USERSoftwareMicrosoftMicrosoft SQL Server 4)、需要的话就重新启动系统; 5)、重新安装。 另外也可尝试单步运行安装 SQL Server 2000的方法: 1)、放入 SQL Server 2000 光盘. 2)、在"开始"--"运行"键入 "F:x86setup.exe k=dbg" (F是光盘) 注意: 1)、不同的操作系统支持的SQL Server 2000版本(参见:SQL Server 2000 各版本的区别简介及版本情况查询一文)。 Windows 2000 Server可以安装SQL Server 2000的任何版本. Windows 2000 Professional只能安装SQL Server 2000的个人版、开发版、评估版、MCDE 2)、SQL Server 2000各版本以及对软硬件的要求(参见:SQL Server 2000 的硬件和软件安装要求一文)。 三、情况4的解决办法 因为安装文件的路径(完整路径)里有中文. 比如c:SQLSERVER中文企业版 改成c:SQLSERVER 四、情况5的解决办法 1)、重启机器,再进行安装,如果发现还有该错误,请按下面步骤; 2)、在开始--运行中输入regedIT; 3)、到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager位置找到 PendingFileRenameOperations项目,并删除它。这样就可以清除安装暂挂项目。 4)、选择文件--倒出,保存; 5)、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认; 6)、重启安装,问题解决 五、如果问题依旧,试试先修复操作系统: 命令提示符下执行: sfc /scannow 。 最后的方法:换 Windows 2000 安装盘和 SQL Server 2000 安装盘,有时候问题的原因很奇怪,有人曾更换了一个电源就解决了问题。 1)、先卸载您的 SQL Server 2000,必要的时候删除 Program FilesMicrosoft SQL Server 文件夹; 2)、打开注册表; 在"开始"--"运行"键入"regedIT" 3)、按下列顺序点击打开; + HKEY_LOCAL_MACHINE + SOFTWART + Microsoft + Windows + CurrentVersion + Setup + ExceptionComponents 4)、将 ExceptionComponents 下面的文件夹全部删除; 如{60BFF50D-FB2C-4498-A577-C9548C390BB9} {60BFF50D-FB2C-4498-A577-C9548C390BB9} {60BFF50D-FB2C-4498-A577-C9548C390BB9} {60BFF50D-FB2C-4498-A577-C9548C390BB9} 5)、重新启动; 6)、重新安装 SQL Server 2000 。 六、其他说明 1)、Windows目录中的SQLstp.log文件,该文件列出了安装程序所执行的操作的详细信息,并包含安装期间遇到的所有错误。 通过检查该文件,可以详细了解安装在什么地方失败、为什么失败。 2)、SQL安装的时的错误信息保存在一个叫Errorlog的日志文件中,默认情况下该文件位于Program FilesMicrosoft SQL ServerMssqlLog 目录中。该错误日志包含安装程序试图启动SQL-Server时SQL-Server所遇到的错误,这些信息可以帮助您深入检查错误原因。 3)、需要检查的另一个组件是Microsoft数据访问组件(MDAC)安装程序,它作为SQL-Server2000安装程序的一部分启动。 SQL-Server2000安装程序会安装MDAC2.6。MDAC安装程序会创建名为DASEtup.log的单独的日志文件;您可以查看此日志文件并确保MDAC 安装程序没有出现问题。 SQL或msde安装问题-Command line option syntax error. Typ SQL 2000安装问题--Command line option syntax error 当安装程序安装到: 安装程序正在安装ms数据访问组件 时,屏幕出现错误提示: --------------------------- SQL Redist --------------------------- Command line option syntax error. Type Command /? for Help. --------------------------- 确定 --------------------------- 然后点确定继续,安装程序开始复制文件,复制完文件后又出现错误提示: 无法找到动态连接库sqlunirl.dll于指定路径“…sqlunirl.dll”(超级长的路径!) 点确定后安装程序停止运行,查看安装日志。 解决方法: 引起这问题的原因是,SQLServer的安装文件被放在了中文目录下. 将SQLServer的安装文件,拷到英文目录,安装就OK 比如将: “D:Sqlserver安装盘”中的"安装盘"去掉。就行了! 什么?还是不行?!别急,嘿嘿。 看看您的用户名是不是中文的,改成英文的吧。这个用户名指的就是您登录windows的时候使用的用户名,系统默认的是administrator。 您不舍的修改这个用户名?那就重新创建一个英文的用户吧,用这个用户登录然后安装就行了。 再多嘴说一说原因吧: 软件在安装的时候会先解压,生成一些临时文件,系统调用这些文件进行安装。有时候这些文件放在当前的目录下,有时候放在“C:Documents and Settings用户名Local SettingsTemp”文件夹中,这时候如果您的“用户名”是中文的话,就可能失败了。看来还是支持中文不够好啊!无奈!

Visual C++ 2005 Redistributable Package

把它卸载了再重装。注意卸载的时候程序提示找不到文件不用管,点取消,然后下一步才是关键,就是要把Revo Uninstaller搜索出来的注册表项目全部删除,然后问题才解决。

IsadoraEdison人物介绍

IsadoraEdisonIsadoraEdison,是一名演员,代表作有《SuburbanSecrets》等。外文名:IsadoraEdison职业:演员代表作品:《SuburbanSecrets》合作人物:JosephW.Sarno

jedis 怎么获取存储的对象

安装好redis,进行了基本的操作。包括对map list 和自定义对象的基本操作。笔记都在代码注释里,直接上代码。private Jedis jedis; @Before public void before() { jedis = new Jedis("127.0.0.1"); } /** * 简单添加 */ @Test public void test1() { String name = "name"; String value = "qq"; jedis.set(name, value); System.out.println("追加前:" + jedis.get(name)); // 追加前:qq // 在原有值得基础上添加,如若之前没有该key,则导入该key jedis.append(name, "ww"); System.out.println("追加后:" + jedis.get(name)); // 追加后:qqww jedis.append("id", "ee"); System.out.println("没此key:" + jedis.get(name)); System.out.println("get此key:" + jedis.get("id")); } /** * mset 是设置多个key-value值 参数(key1,value1,key2,value2,...,keyn,valuen) mget * 是获取多个key所对应的value值 参数(key1,key2,key3,...,keyn) 返回的是个list */ @Test public void test2() { jedis.mset("name1", "aa", "name2", "bb", "name3", "cc"); System.out.println(jedis.mget("name1", "name2", "name3")); } /** * map */ @Test public void test3() { Map<String, String> map = new HashMap<String, String>(); map.put("name", "fujianchao"); map.put("password", "123"); map.put("age", "12"); // 存入一个map jedis.hmset("user", map); // map key的个数 System.out.println("map的key的个数" + jedis.hlen("user")); // map key System.out.println("map的key" + jedis.hkeys("user")); // map value System.out.println("map的value" + jedis.hvals("user")); // (String key, String... fields)返回值是一个list List<String> list = jedis.hmget("user", "age", "name"); System.out.println("redis中key的各个 fields值:" + jedis.hmget("user", "age", "name") + list.size()); // 删除map中的某一个键 的值 password // 当然 (key, fields) 也可以是多个fields jedis.hdel("user", "age"); System.out.println("删除后map的key" + jedis.hkeys("user")); } /** * list */ @Test public void test4() { jedis.lpush("list", "aa"); jedis.lpush("list", "bb"); jedis.lpush("list", "cc"); System.out.println(jedis.lrange("list", 0, -1)); System.out.println(jedis.lrange("list", 0, 1)); System.out.println(jedis.lpop("list")); // 栈顶 jedis.del("list"); } /** * 自定义对象 User为例 id name * * RedisTemplate 中有 序列化和反序列化 * 如:template.getStringSerializer().serialize("name") */ @Test public void test5() { User user = new User(); user.setId(123); user.setName("fighter"); // 存入一个 user对象 jedis.set("user".getBytes(), SerializationUtil.serialize(user)); // 获取 byte[] bs = jedis.get("user".getBytes()); User desUser = (User) SerializationUtil.deserialize(bs); System.out.println(desUser.getId() + ":" + desUser.getName()); }对于自定义对象,需要进行序列化和反序列化:我这里提取出了一个工具类,SerializationUtil.java/** * 序列化就是将一个对象转换为二进制的数据流。这样就可以进行传输,或者保存到文件中。如果一个类的对象要想实现序列化,就必须实现serializable接口。在此接口中没有任何的方法,此接口只是作为一个标识,表示本类的对象具备了序列化的能力而已。 * 反序列化:将二进制数据流转换成相应的对象。 * 如果想要完成对象的序列化,则还要依靠ObjectOutputStream和ObjectInputStream,前者属于序列化操作,而后者属于反序列化操作。 * */import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class SerializationUtil { /** * 序列化 * * @param object * @return */ public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try { baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); byte[] bytes = baos.toByteArray(); return bytes; } catch (Exception e) { } return null; } /** * 反序列化 * * @param bytes * @return */ public static Object deserialize(byte[] bytes) { ByteArrayInputStream bais = null; try { bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } catch (Exception e) { } return null; }}还有都熟悉的User类。我只简单实用id和name,测试,也贴一下吧public class User implements Serializable { /** * */ private static final long serialVersionUID = -1530813282496676263L; private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name;}

mysql同步数据到redis-增量同步

使用阿里开源的 canal 作为数据同步工具。 总的来说有两种方案 本文把两种方式都实现下。如果公司有统一的平台接入binlog的话,canal+mq应该是比较好的解耦的方式。 pom依赖 CanalClientMysql2Redis RocketmqMysql2Redis 官方文档有给出顺序性的说明 https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart 在上面的配置中,我使用的是canal.mq.partition=0,是单分区(rocketmq中应该叫consume queue), 看下控制台可以看到全是发送到queue=0的消费队列

97 基于Binlog实现MySQL与Redis数据一致性问题

mysql 与Redis 数据一致性问题 直接将Redis清空 中间件 canal框架 基于 docker环境构建 canal 框架 原理: <u>https://gitee.com/mirrors/canal?utm_source=alading&utm_campaign=repo</u> canal 框架原理 1,canal伪装成mysql从节点 订阅mysql 主节点的binlog文件 2,当我们的mysql 主节点 binlog 文件发生了变化,则将binlog 文件发送给canal服务器端 3,canal 服务器端将该binlog 文件二进制转换成json格式给canal客户端 4,canal客户端在将改数据同步到Redis/ES 基于Binlog 开启方式 1.mysql 开启binlog 文件配置 windows 配置 查询 my.ini配置文件位置 C:ProgramDataMySQLMySQL Server 5.7 2, linux mysql 安装canal 进入容器 编辑配置文件 重启canal Docker-compose 构建canal canal.instance.mysql.slaveId:slaveId不能与mysql的serverId一样 canal.instance.master.address:mysql地址 canal.instance.dbUsername:mysql账号 canal.instance.dbPassword:mysql密码

greedisgood什么意思

贪婪是好

greedisgood是啥意思

魔兽的加钱秘籍意思是 贪心是很好的

基于redis的分布式RateLimiter(限流)实现

系统需要对接某IM厂商rest接口,向客户端推送消息(以及其他IM业务) 该厂商对rest接口调用有频率限制:总rest调用9000次/30s;消息推送600次/30s 系统为分布式集群,需要控制整个分布式集群总的接口调用频率满足以上限制 上篇文章 《 Guava RateLimiter源码解析 》中介绍了Guava RateLimiter的用法及原理,但为什么不直接使用Guava RateLimiter?原因有二: 为什么说选用redis是合理的? 这里完全参考Guava RateLimiter实现思路,不同的是,Guava将令牌桶数据存放于对象(内存)中,这里讲令牌桶数据存放在redis中,奉上源码 https://github.com/manerfan/m... 首先创建令牌桶数据模型 reSync函数同样是为了解决令牌桶数据更新问题,在每次获取令牌之前调用,这里不多介绍 expires函数计算redis数据过期时间。同样的例子,某接口需要分别对每个用户做访问频率限制,假设系统中存在6W用户,则至多需要在redis中创建6W条数据,对于长期运行的系统,这个数字会只增不减,这对于redis来说也是一个不小的挑战(虽然示例中的数字相对较小)。为了减轻redis压力,需要对令牌桶数据做过期处理,对于使用频率不是很高的业务场景,可以及时清理。 putDefaultPermits用于生成默认令牌桶并存入redis permits的getter setter方法实现了redis中令牌桶的获取及更新 now用于获取redis服务器的时间,这样便能保证分布式集群中各节点对数据处理的一致性 该函数与reserveAndGetWaitLength等同,只是为了避免并发问题而添加了同步锁 需要注意,这里与Guava RateLimiter不同的是, Guava中的返回是更新前的(上次请求计算的)nextFreeTicketMicros,本次请求通过为上次请求的预消费行为埋单而实现突发请求的处理;这里返回的是由于桶中令牌不足而需要真真切切等待的时间

为什么要用 redis 而不用 map/guava 做缓存?

缓存分为本地缓存和分布式缓存。使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂。 以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。

redis-2.8.21怎么部署

Redis集群部署文档(centos6系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)<a class="baidu-highlight" href="https://www.baidu.com/s?wd=127.0.0.1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YvuhfsmHu9nW6kmHczPj0s0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPWf3rHnLrjRYPWc3rHb1nHcd" target="_blank">127.0.0.1</a>:7000<a class="baidu-highlight" href="https://www.baidu.com/s?wd=127.0.0.1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YvuhfsmHu9nW6kmHczPj0s0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPWf3rHnLrjRYPWc3rHb1nHcd" target="_blank">127.0.0.1</a>:7001<a class="baidu-highlight" href="https://www.baidu.com/s?wd=127.0.0.1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YvuhfsmHu9nW6kmHczPj0s0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPWf3rHnLrjRYPWc3rHb1nHcd" target="_blank">127.0.0.1</a>:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005 1:下载redis。官网下载3.0.0版本,之前2.几的版本不支持集群模式下载地址:<a href="https:// github.com/antirez/redis/archive/3.0.0-rc2.tar.gz" target="_blank">https:// github.com/antirez/redis/archive/3.0.0-rc2.tar.gz</a>2:上传服务器,解压,编译tar -zxvf redis-3.0.0-rc2.tar.gz mv redis-3.0.0-rc2.tar.gz redis3.0cd /usr/local/redis3.0makemake install 3:创建集群需要的目录mkdir -p /usr.local/clustercd /usr.local/clustermkdir 7000mkdir 7001mkdir 7002mkdir 7003mkdir 7004mkdir 7005 4:修改配置文件redis.confcp /usr/local/redis3.0/redis.conf /usr.local/clustervi redis.conf##修改配置文件中的下面选项port 7000daemonize yescluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yes##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面cp /usr/local/cluster/redis.conf /usr/local/cluster/7000cp /usr/local/cluster/redis.conf /usr/local/cluster/7001cp /usr/local/cluster/redis.conf /usr/local/cluster/7002cp /usr/local/cluster/redis.conf /usr/local/cluster/7003cp /usr/local/cluster/redis.conf /usr/local/cluster/7004cp /usr/local/cluster/redis.conf /usr/local/cluster/7005 ##注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称 5:分别启动这6个redis实例cd /usr/local/cluster/7000redis-server redis.confcd /usr/local/cluster/7001redis-server redis.confcd /usr/local/cluster/7002redis-server redis.confcd /usr/local/cluster/7003redis-server redis.confcd /usr/local/cluster/7004redis-server redis.confcd /usr/local/cluster/7005redis-server redis.conf ##启动之后使用命令查看redis的启动情况ps -ef|grep redis如下图显示则说明启动成功 6:执行redis的创建集群命令创建集群cd /usr/local/redis3.0/src./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 6.1执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境错误内容:/usr/bin/env: ruby: No such file or directory所以需要安装ruby的环境,这里推荐使用yum install ruby安装yum install ruby 6.2然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装 错误内容:./redis-trib.rb:24:in `require": no such file to load -- rubygems (LoadError)from ./redis-trib.rb:24yum install rubygems 6.3再次执行第6步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装错误内容:/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require": no such file to load -- redis (LoadError)from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require"from ./redis-trib.rb:25 gem install redis 6.4 再次执行第6步的命令,正常执行 输入yes,然后配置完成。 至此redis集群即搭建成功!7:使用redis-cli命令进入集群环境redis-cli -c -p 7000

predixy一款高性能全功能redis代理

redis作为一款优秀的NoSQL代表软件,正变得越来越流行,虽然Redis很容易就可以启动并使用,但是要想在线上用好它却也并非易事。redis的高可用和可扩展无论是自带的Redis Sentinel还是Redis Cluster都要求客户端进行额外的支持,而目前基本上没有合适的客户端能够做这些事情,实际上客户端来做这些事情也并不合适,它会让维护变得特别困难。因此在客户端和redis服务端之间加一层代理成了一种理想的方案,代理屏蔽后端Redis实现细节向客户端提供redis服务,可以完美的解决Redis的高可用和扩展性问题,同时代理的引入也使得Redis维护变得更加简单。在本文所要介绍的代理predixy之前,已经有几款流行的redis代理,它们各具特色。接下来,我们就来比较以下代理: 简单来说,predixy既支持Redis Sentinel也支持Redis Cluster 作为redis代理,高性能是硬性要求,为了测试上面四款代理的性能接下来我们就来做个简单的评测,测试平台及各代理具体的版本信息如下: redis-server、各代理、redis-benchmark均在这一台机器上运行。 redis部署: 以下测试的结果中,横坐标为数据大小、纵坐标为qps或者毫秒。 这里单线程是指四款代理都运行在单线程下(下同),redis-benchmark默认并发50个客户端连接,每个连接每次发送一个命令收到响应后再发下一个命令。这是很多线上实际的场景。 在吞吐上,四款代理的性能排列的整齐有序,predixy大幅领先于另外三款代理,而twemproxy又以较大优势领先另外两个,剩下的两个codis在数据量小于512的时候稍稍领先cerberus,而当数据量大于512的时候,codis对cerberus的领先越来越大。整体上在数据量达到16KB时,由于redis-benchmark本身成为瓶颈,predixy和twemproxy的SET成绩差不多了。 在延时上,codis由于语言的问题,一直都大于另外三款代理,后续测试也一样。 在有些场景下,客户端可能在处理一个请求时可能需要发起多次redis请求,这时如果把多个redis请求pipeline一起请求的话,会大幅改善性能。本轮测试就来看看当客户端一次发送多个请求时我们各代理表现如何?Redis-benchmark依旧是并发50个连接,但是一次发送20个命令。 在吞吐上,redis-benchmark一次pipeline 20个命令后,各代理的吞吐量全都猛增。predixy更是一骑绝尘,遥遥领先另外三个,而最后看到在GET 4K数量据的时候predixy表现和其它代理差不多是因为对predixy来说,当数据量大于2K时redis-benchmark自身已经成为瓶颈。另外三款代理,在上轮测试中落后的cerberus在本轮测试一开始表现远好过twemproxy和codis,但cerberus还是存在随着数据量变大性能迅速降低的问题。twemproxy和codis在本轮测试中表现基本相当。 在时延上,codis固有的问题表现较差,另外三款在数据量较小时差别较小,而当数据量超过512时,predixy则表现出较明显的优势。 测完了单线程,现在我们开始多线程测试,由于twemproxy不支持多线程,因此twemproxy不参与多线程的测试。考虑到redis-benchmark本身是个单线程程序,在多线程代理下如果我们再测单个命令的性能,那redis-benchmark很可能就是瓶颈,则无法更明确的看出各代理的性能差异,因此我们直接测试pipeline,还跟上轮一样,50个并发连接,一次发送20个命令。 总体趋势和第二轮单线程pipeline测试一致,predixy在本轮测试中依旧取得了领先,不过在开始阶段cerberus和predixy遥遥领先于codis,cerberus和predixy差距不大。但是随着数据量的变大,cerberus再次显示出了性能急剧降低的问题,到1K以后甚至就比codis差了。 在功能的对比上,predixy相比另外三款代理更为全面,基本可以完全适用原生redis的使用场景。在性能上,predixy在各轮测试中都以较大优势领先。对各代理的总结如下:

【求翻译】You are free to,Share — copy and redistribute the material in any medium or format.

你是自由的,分享-复制和分发的材料在任何媒介或formatadapt -混音,变换,建立在材料许可不能这些自由撤销只要你遵守许可条款。如果对我的回答满意,请给予采纳,如果对我的回答不满意,可进行追问

Edisco唱的《沙滩恋曲》的歌词翻译成中文,谢谢!

本人自己揣摩的,觉得歌词以及翻译算是很明朗的了。有什么错误请加以指正,不喜勿喷,谢谢Chillax in the love shack Summertime, overnight Every time, I think, my dreams come true Here we all time Nearly everything mine Get in Line with the things for you What time will you be here now? It"s a quarter past 7 now Ah...ha...I"m waiting for you ————————————————————What (are) you gonna do? When it hits you You and me, I Hold back my shine When I realize I"m getting my tan in your Sunray And we see Through the mirror That you got me Thinking clearer And I"m gonna be under your skies I"ll stay翻译中几个重点:chillax = chill/chill out,意思是放松的意思it his sb 某人突然想到中文翻译:Chillax in the love shack Summertime, overnight (回忆)夏夜整晚我们在爱的小屋里一起放松(打发时间)Every time, I think, my dreams come true 在每次(与你一起)的时光里,让我觉得的我梦想都会实现Here we all time在与你的时光里,Nearly everything mine 几乎我所有的事情,Get in Line (我都想)一个个的(按顺序)with the things for you 把这些事情与你分享What time will you be here now? 现在你到哪里了It"s a quarter past 7 now 已经7点15分了Ah...ha...啊哈I"m waiting for you 我会一直等你———————————————————————What (are) you gonna do? When it hits you You and me在你和我的时间里,你会突然想去做什么I Hold back my shine When I realize I"m getting my tan in your Sunray 我只会下意识的缩减自己的光芒,用你的光芒来烫伤我的皮肤(说句实话这句挺难翻译的,我本想翻译成“我只会下意识的遮住我的双眼,害怕被你的目光烫到我(意思就是不敢看你,害羞)”,但觉得不合适,表现不出这首歌的含义,整首歌有点肉麻趋向,所以觉得这个翻译最合适)And we see Through the mirror 当我们站在镜子前That you got me Thinking clearer(相信)你更能把我的想法看的更清楚 And I"m gonna be under your skies I"ll stay我将在你的天空下永世长存(意思就是我将会永远与你在一起)

Edison invited the bulb in1879.he is/was an Ameri

Edison invited the bulb in 1879. He was an American scientist.这里的 be 动词应该用过去式 was, 与前面句子里的谓语动词 invited 一致。

本人姓陈,想改个英文名。要E开头的,因为陈冠希叫edison。陈奕迅叫eason。所以想E开头的。

Ed

windows怎么连接redis

1点击安装exe文件,进行安装。选择好路径,一直到安装结束即可。2点击Service查看Redis服务是否正确的安装。Windows--》Service.msc。默认的端口为6379。服务已启动。3使用客户端工具进行连接,出现如下画面即成功。4使用CMD工具,安装另一个Redis实例服务,端口为6369.需要提前建好6369端口使用的conf文件如:C:UsersGray>E: edis-2.8.17 edis-server.exe --service-installE: edis-2.8.17 edis6369.conf --service-name RedisServer6369 --port 63695试验了几次都没有提示成功的信息,但是查看服务成功了,而且用客户端连接也成功了。6查看6369端口的redis服务7使用客户端连接6369 redis服务,出现如下界面表示成功8至此,大功告成。

Redis怎么配置JedisPool参数?

edis之如何配置jedisPool参数JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了,在JedisPoolConfigmaxIdle:控制一个pool最多有多少个状态为idle的jedis实例;whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;testOnReturn:在return给pool时,是否提前进行validate操作;testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;其中JedisPoolConfig对一些参数的默认设置如下:testWhileIdle=trueminEvictableIdleTimeMills=60000timeBetweenEvictionRunsMillis=30000numTestsPerEvictionRun=-1

redis之怎么配置jedisPool参数

edis之如何配置jedisPool参数JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了,在JedisPoolConfigmaxIdle:控制一个pool最多有多少个状态为idle的jedis实例;whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;testOnReturn:在return给pool时,是否提前进行validate操作;testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;其中JedisPoolConfig对一些参数的默认设置如下:testWhileIdle=trueminEvictableIdleTimeMills=60000timeBetweenEvictionRunsMillis=30000numTestsPerEvictionRun=-1

docker 部署redis

以最新镜像为例 参数说明: --name my-redis >>> redis 容器起别名为 my-redis -d >>> 表示容器后台运行 -p 6379:6379 >>> 表示 容器端口映射 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf >>> 表示 redis 配置文件目录挂载 -v /docker/redis/data:/data >>> 表示r edis 持久化数据目录挂载 redis >>> 镜像名称 redis-server /etc/redis/redis.conf >>> 表示以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/docker/redis/conf/redis.conf(宿主机目录) --appendonly yes >>> 表示开启redis 持久化

如何把redis有参数方法改成无参

edis之如何配置jedisPool参数JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了,在JedisPoolConfigmaxIdle:控制一个pool最多有多少个状态为idle的jedis实例;whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;testOnReturn:在return给pool时,是否提前进行validate操作;testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;其中JedisPoolConfig对一些参数的默认设置如下:testWhileIdle=trueminEvictableIdleTimeMills=60000timeBetweenEvictionRunsMillis=30000numTestsPerEvictionRun=-1

Redis:redis不是内存数据库么?为什么我把redis-server.exe关了重新启动值还有呢?

清空后,见文件属性设置为。。只读。。

redis读音正解

redis不是单词_edis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis怎么配置JedisPool参数?

edis之如何配置jedisPool参数JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了,在JedisPoolConfigmaxIdle:控制一个pool最多有多少个状态为idle的jedis实例;whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;testOnReturn:在return给pool时,是否提前进行validate操作;testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;其中JedisPoolConfig对一些参数的默认设置如下:testWhileIdle=trueminEvictableIdleTimeMills=60000timeBetweenEvictionRunsMillis=30000numTestsPerEvictionRun=-1

redis-trib.rb check 192.168.2.20:7000这个命令的含义

edis-trib.rb命令详解redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。用户无需指定哪台节点为master,哪台节点为slave,因为redis内部算法帮我们实现了,也可以先创建主节点,然后再指定从节点;create–replicas # 可选参数,replicas表示每个master需要有几个slave。只有master节点的创建方式。

如何给redis设置密码

edis作为一个高速数据库,在互联网上,必须有对应的安全机制来进行保护,方法有2,如下。 1.比较安全的办法是采用绑定IP的方式来进行控制。 请在redis...不可以。王者荣耀游戏的防沉迷系统限制的是你这一个账号,而不是你这个账号内的角色,意思就是不管你这个账号下面有多少个不同区的角色,只要所有角色一天内加起来游戏时间达到了限制,那么账号便会被限制,此时该账号内的所有角色在今天都无法参与游戏了。若是真的还想玩的话,那么除非换一个号,否则是不可能的了。扩展资料:《王者荣耀》的具体防沉迷措施:12周岁以下(含12周岁)的未成年人限制每天只能进行游戏1个小时,并且晚上9点之后将禁止该年龄段玩家的登陆,而至于12周岁以上的未成年人,每天的游戏限玩时间为2小时,超出该时间的玩家也将会被游戏强制下线。该措施中的年龄均是按照游戏实名制时候登记的身份证日期

redis之怎么配置jedisPool参数

edis之如何配置jedisPool参数JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力,JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态就成exhausted了,在JedisPoolConfigmaxIdle:控制一个pool最多有多少个状态为idle的jedis实例;whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种WHEN_EXHAUSTED_FAIL(表示无jedis实例时,直接抛出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到maxWait时抛出JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个jedis实例,也就说设置的maxActive无用);maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;testOnBorrow:在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;testOnReturn:在return给pool时,是否提前进行validate操作;testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数;numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数;minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义;lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列;其中JedisPoolConfig对一些参数的默认设置如下:testWhileIdle=trueminEvictableIdleTimeMills=60000timeBetweenEvictionRunsMillis=30000numTestsPerEvictionRun=-1

speedpak的eBay eDIS橙联物流平台是要先充值才能再发货吗

先充值,再发货。你也可以先发货,但是如果不充值,你的货会被扣下来。等你充值好了再运送。

redis解决高并发问题吗

edis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。为什么redis的地位越来越高,我们为何不选择memcache,这是因为memcache只能存储字符串,而redis存储类型很丰富(例如有字符串、LIST、SET等),memcache每个值最大只能存储1M,存储资源非常有限,十分消耗内存资源,而redis可以存储1G,最重要的是memcache它不如redis安全,当服务器发生故障或者意外关机等情况时,redsi会把内存中的数据备份到硬盘中,而memcache所存储的东西全部丢失;这也说明了memcache不适合做数据库来用,可以用来做缓存。下面用redis解决瞬间秒杀活动来说明:下面这个程序模拟了20w人一瞬间涌入这个页面进行秒杀,能够秒杀成功的只有500人,我们把先进来的用户放入redis队列中,当队列中的用户达到500时,后来用户就转到秒杀结束页面。这里用随机数来表示不同的用户。这里我们可以看到秒杀成功的第一个用户的id是208522,秒杀成功的最后一个用户是176260,参与秒杀人数总共是20w。(让大家注意这些的原因是为了验证下面的准确性)。接下来我们依次从队列中把秒杀成功的500个用户取出来并观察第一个用户和最后一个用户是否跟之前的记录值一样我们可以看到从秒杀成功队列中依次取出的第一个用户id是208522,最后一个用户是176260,可以看出结果是很准确的。redis在解决高并发这方面的能力是真的挺不错的。

DSP中,修改哪些外设帧中寄存器内容时需要使用EALLOW和EDIS指令?若不使用会产生什么结果?

具体哪些寄存器是EALLOW保护的,需要查数据手册。如果是EALLOW保护的寄存器就必须用EALLOW和EDIS指令来开头和结尾。比如说修改GPIO多路选择寄存器、修改GPIO上拉选择寄存器等。如果不使用,按照数据手册上的说法,运行就不会修改这些寄存器的值,及时你写了这些指令。TI设置EALLOW保护的原因估计是怕用户写错一些指令影响其他地方的运行。

我伊蒂丝女皇中的edis怎么画

1、首先打开手机,在浏览器中搜索伊蒂丝女皇简笔画。2、其次在找到画伊蒂丝女皇的纸、笔,再用笔按照伊蒂丝女皇简笔画,在纸上画出来。3、最后在找到彩笔涂上颜色即可。

EDIS 包裹路向不支持 怎么办

快递路向不支持可以走邮政

dsp指令中 EALLOW,EDIS,ERTM都是什么意思? 能把答案给我传一份吗?

#define EINT asm(" clrc INTM") //INTM置0,开中断 #define DINT asm(" setc INTM") //INTM置1,关中断 #define ERTM asm(" clrc DBGM") //使能调试事件 #define DRTM asm(" setc DBGM") //禁止调试事件

dsp指令中 EALLOW,EDIS,ERTM都是什么意思

EALLOW,EDIS是成对使用的,有些寄存器是受到保护的,不能任意写,EALLOW相当于去掉保护,对写保护的寄存器进行操作后 EDIS 是重新把这个寄存器保护起来的意思。

thomas edison的生日

1847年2月11日

edisonT恤背后的英文帮帮翻译,谢谢!

【第一句的fortyne应该是fortune.第三句的mohe应是move,bettleground应是battleground,第四局的deciptrer应是decipher】我是一个幸运的士兵庆幸还有手能在我跌倒后支撑着我再爬起来。庆幸还有腿能让我去到下一个战场。庆幸还有头脑帮助我解读我胜利的蓝图。庆幸还有我的兄弟姐妹们在我虚弱的时候扶持我。庆幸还有对未来和抵达那里之后的愿景。庆幸还有一个声音在我的思想和信仰中传播并产生着影响庆幸还有家,还有我的弟兄们,我的战友,(后面那个rugd也是错词,我真的不知道是什么词了……或许是“一切我拥有的幸福”)你是谁。这个吧里有讨论这个的帖子,你自己可以去看看。http://tieba.baidu.com/f?kz=202828059

为什么陈冠希的英文名字叫EDISON

你去问他爸或者他妈就知道了。。。他在外国出生,拿外国护照,所以英文名就像我们出生之后,上户口时就有了一样,是父母或者长辈起的呀。

FL Studio里使用Edison录音的问题

Melodyne是一款FX的插件,安装正确后,通常可以在调音台MIXER中的FX机架上加载这个插件,通过Edison录音的音频文件可以导出到 指定的目录,也可以直接导出到当前的工程的某个通道直接通过FX来处理,导出音频的文件方法是:单击EDISON的第二排左边第一个按钮(保存图标)就可以导出WAV文件到 指定的目录中,导出到当前工程的某个音频轨通道的方法:单击工具栏(第二排按钮)的小扳手工具,从列表中选择倒数第二个:Send To Playlist As Audio Clip,该操作可以完成将录制的音频文件音频轨的方式发送到Playlist上,如果想对音频进行Melodyne处理,可以单击刚才发送的音频轨,将其它FX指定到某个调音台的音轨,比如设置 为6,在MIXER的第6轨的FX机架上加入Melodyne

什么是 Intel Edison

intel的开发板,就是一个迷你电脑,主要装在智能家居或机器人上

Edison怎么发音?爱迪生?

是的

F.edison是什么意思?

F是名字的缩写.Edison是姓

目的港口 Edison,NJ.是哪里

爱迪生,位于美国新泽西州。

Thomas Edison英文简介

分类: 教育/科学 >> 外语学习 解析: Thomas Alva Edison (February 11, 1847 – October 18, 1931) was an inventor and busines *** an who developed many important devices. "The Wizard of Menlo Park" was one of the first inventors to apply the principles of mass production to the process of invention. In 1880 Edison founded the journal Science, which in 1900 became the journal of the American Association for the Advancement of Science. Edison is considered one of the most prolific inventors, holding a record 1,093 patents in his name. Most of these inventions were not pletely original but improvements of earlier patents, and were actually made by his numerous employees. Edison was frequently criticized for not sharing the credits. Nevertheless, Edison received patents worldwide, including the United States, United Kingdom, France, and Germany. Edison started the Motion Picture Patents Company, which was a conglomerate of nine major film studios (monly known as the Edison Trust).

Thomas Edison(托马斯 爱迪生)的个人介绍

他发明了电灯

edison音响是哪个国家牌子

edison音响是荷兰国家牌子。爱迪生Edison珠海爱迪生智能家居股份有限公司以下简称爱迪生由广州海鸥卫浴用品股份有限公司与艾迪西流体控制股份有限公司共同出资打造,公司专注于暖通智能控制,空调智能控制系统集成及物联网科技产品的深度研发及生产。edison音响原理音响指除了人的语言音乐之外的其他声响,包括自然环境的声响动物的声音机器工具的音响人的动作发出的各种声音等,音响大概包括功放周边设备包括压限器效果器均衡器VCD,DVD等,扬声器音箱喇叭调音台麦克风显示设备等等加起来一套。其中音箱就是声音输出设备喇叭低音炮等等,一个音箱里包括高低中三种扬声器,三种但不一定就三个,技术的的发展历史可以分为电子管晶体管集成电路场效应管四个阶段,音箱发声的原理我们首先需要了解声音的传播途径,声音的传播需要介质真空不能传声声间要靠一切气体液体固体作媒介传播出去。

edison是什么意思

陈冠希的英文名字~也是哪个科学家 爱迪生的名字~!

edison音响是哪个国家牌子

edison音响是荷兰国家牌子。爱迪生Edison珠海爱迪生智能家居股份有限公司以下简称爱迪生由广州海鸥卫浴用品股份有限公司与艾迪西流体控制股份有限公司共同出资打造,公司专注于暖通智能控制,空调智能控制系统集成及物联网科技产品的深度研发及生产。edison音响原理音响指除了人的语言音乐之外的其他声响,包括自然环境的声响动物的声音机器工具的音响人的动作发出的各种声音等,音响大概包括功放周边设备包括压限器效果器均衡器VCD,DVD等,扬声器音箱喇叭调音台麦克风显示设备等等加起来一套。其中音箱就是声音输出设备喇叭低音炮等等,一个音箱里包括高低中三种扬声器,三种但不一定就三个,技术的的发展历史可以分为电子管晶体管集成电路场效应管四个阶段,音箱发声的原理我们首先需要了解声音的传播途径,声音的传播需要介质真空不能传声声间要靠一切气体液体固体作媒介传播出去。

edison怎么读 英语edison怎么读

1、Edison英[u02c8edisn]美[u02c8u025bdu026asu0259n]n.爱迪生(美国发明家)。 2、[例句]The basic design changed little from that patented by Edison more than 100 years ago.其本质设计和100多年前爱迪生的专利设计相差无几。

EDISON芯片是哪里的? BRIDGELUX, EDISON 还有CREE 的芯片哪个芯片用作led灯最好?

艾迪生不产芯片,其LED一般用台湾晶元芯片普瑞和科锐是美国品牌,其LED都用自家芯片CREE最好,然后是BRIDGELUX,EDISON(晶元芯片)垫底选择芯片先价格定位,然后看结构适不适合,科锐都是垂直结构,芯片底部是正极,另外2家正负极都在上面综合来说,以上3种芯片都比较可靠,相比最差的晶元也比大陆最好的好很多

陈冠希的英文名EDISON怎么读?知道的用中文打出来,谢了!!!

埃迪森

edison录不了音咋回事

使用了主声音驱动程序。1、Edison是FLStudio的一个常用插件,主要用来进行音频编辑与录制,出现录不了音的现象可能是使用了主声音驱动程序。2、应该将其切换为FLStudio自带的虚拟声卡或者你的外置声卡设备后再次尝试录音。

edison没有我高的英文翻译

Edison is than me shorter. 望采纳,谢谢!

edison是谁?

陈冠希

Edison是姓还是名

不对。Thomas Edison中的“ Edison”也是名。那是爱迪生,“Thomas ”托马斯是“family name”
 首页 上一页  1 2 3 4  下一页  尾页