package
com.lujianing.utils;
import
org.junit.Before;
import
org.junit.Test;
import
redis.clients.jedis.Jedis;
import
redis.clients.jedis.JedisPool;
import
redis.clients.jedis.JedisPoolConfig;
import
java.util.HashMap;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Map;
/**
*
Created by lujianing on 14-2-28.
*/
public
class
JedisUtilTest {
JedisPool
pool;
Jedis
jedis;
@Before
public
void
setUp() {
pool
=
new
JedisPool(
new
JedisPoolConfig(),
"192.168.10.61"
);
jedis
= pool.getResource();
}
@Test
public
void
testGet(){
System.out.println(jedis.get(
"lu"
));
}
/**
*
Redis存储初级的字符串
*
CRUD
*/
@Test
public
void
testBasicString(){
jedis.set(
"name"
,
"minxr"
);
System.out.println(jedis.get(
"name"
));
jedis.append(
"name"
,
"jarorwar"
);
System.out.println(jedis.get(
"name"
));
jedis.set(
"name"
,
"闵晓荣"
);
System.out.println(jedis.get(
"name"
));
jedis.del(
"name"
);
System.out.println(jedis.get(
"name"
));
/**
*
mset相当于
*
jedis.set("name","minxr");
*
jedis.set("jarorwar","闵晓荣");
*/
jedis.mset(
"name"
,
"minxr"
,
"jarorwar"
,
"闵晓荣"
);
System.out.println(jedis.mget(
"name"
,
"jarorwar"
));
}
/**
*
jedis操作Map
*/
@Test
public
void
testMap(){
Map<String,String>
user=
new
HashMap<String,String>();
user.put(
"name"
,
"minxr"
);
user.put(
"pwd"
,
"password"
);
jedis.hmset(
"user"
,user);
List<String>
rsmap = jedis.hmget(
"user"
,
"name"
);
System.out.println(rsmap);
System.out.println(jedis.hmget(
"user"
,
"pwd"
));
System.out.println(jedis.hlen(
"user"
));
System.out.println(jedis.exists(
"user"
));
System.out.println(jedis.hkeys(
"user"
));
System.out.println(jedis.hvals(
"user"
));
Iterator<String>
iter=jedis.hkeys(
"user"
).iterator();
while
(iter.hasNext()){
String
key = iter.next();
System.out.println(key+
":"
+jedis.hmget(
"user"
,key));
}
}
/**
*
jedis操作List
*/
@Test
public
void
testList(){
jedis.del(
"java
framework"
);
System.out.println(jedis.lrange(
"java
framework"
,
0
,-
1
));
jedis.lpush(
"java
framework"
,
"spring"
);
jedis.lpush(
"java
framework"
,
"struts"
);
jedis.lpush(
"java
framework"
,
"hibernate"
);
System.out.println(jedis.lrange(
"java
framework"
,
0
,-
1
));
}
/**
*
jedis操作Set
*/
@Test
public
void
testSet(){
jedis.sadd(
"sname"
,
"minxr"
);
jedis.sadd(
"sname"
,
"jarorwar"
);
jedis.sadd(
"sname"
,
"闵晓荣"
);
jedis.sadd(
"sanme"
,
"noname"
);
jedis.srem(
"sname"
,
"noname"
);
System.out.println(jedis.smembers(
"sname"
));
System.out.println(jedis.sismember(
"sname"
,
"minxr"
));
System.out.println(jedis.srandmember(
"sname"
));
System.out.println(jedis.scard(
"sname"
));
}
@Test
public
void
test()
throws
InterruptedException
{
System.out.println(jedis.keys(
"*"
));
System.out.println(jedis.keys(
"*name"
));
System.out.println(jedis.del(
"sanmdde"
));
System.out.println(jedis.ttl(
"sname"
));
jedis.setex(
"timekey"
,
10
,
"min"
);
Thread.sleep(
5000
);
System.out.println(jedis.ttl(
"timekey"
));
jedis.setex(
"timekey"
,
1
,
"min"
);
System.out.println(jedis.ttl(
"timekey"
));
System.out.println(jedis.exists(
"key"
));
System.out.println(jedis.rename(
"timekey"
,
"time"
));
System.out.println(jedis.get(
"timekey"
));
System.out.println(jedis.get(
"time"
));
jedis.del(
"a"
);
jedis.rpush(
"a"
,
"1"
);
jedis.lpush(
"a"
,
"6"
);
jedis.lpush(
"a"
,
"3"
);
jedis.lpush(
"a"
,
"9"
);
System.out.println(jedis.lrange(
"a"
,
0
,-
1
));
System.out.println(jedis.sort(
"a"
));
System.out.println(jedis.lrange(
"a"
,
0
,-
1
));
}
}
相关推荐
4. **事务**:Redis支持事务,可以一次性执行多个操作,保证这些操作的原子性。 5. **数据结构丰富**:除了基本的键值对,Redis还提供了哈希表、列表、集合和有序集合等复杂数据结构,适合处理各种应用场景。 6. **...
高性能:假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,...
5. **事务**:Redis 提供了事务功能,允许一次执行多个命令,并确保原子性。 6. **发布/订阅**:作为消息中间件,Redis 具有 Pub/Sub(发布/订阅)模式,可用于实现简单的消息传递。 7. **Lua 脚本**:用户可以...
$redis->set('article_title', '我的第一篇文章'); $redis->lPush('articles', 'article_id_1'); // 将文章ID推入列表 // 获取数据 $title = $redis->get('article_title'); $latest_articles = $redis->lRange('...
集合成员是唯一的,这意味着集合中的每个元素只能出现一次。 - **命令示例:** - `SADD key member1 [member2]`: 添加一个或多个成员到集合中。 - `SMEMBERS key`: 获取集合中的所有成员。 - `SCARD key`: 获取...
第一次写博客,记录一下: 最近做了一个帖子的收藏、点赞数量的功能,其实之前也做过类似的功能,因为之前一直使用的mysql 总是感觉对于这种频繁需要改变的值,不应该给予Mysql过大的压力,本文章采用的是redis 做...
它使用原子列表命令来确保消息仅以正确的顺序传递一次,而不会因崩溃的使用者而丢失。 可以在有关其初始设计的博客文章中找到详细信息: : 第二篇文章描述了当前版本的性能改进: ://big-elephants....
使脚本可执行并添加到 cron 定时任务,例如每 3 分钟检查一次: ```bash chmod +x /scripts/redis-check.sh crontab -e ``` 在 crontab 文件中添加以下行: ```cron */3 * * * * /bin/bash /scripts/redis-check....
2. `lpop`: 这个命令用于移除并返回列表的第一个元素。在消息队列中,消费者(订阅者)通过调用此命令获取并处理队列头部的消息。 以下是一个简单的PHP+Redis消息队列实现步骤: 1. **连接Redis**: 使用`new Redis...
若任务执行失败,则可以将任务的分值更新为当前时间戳,并将其重新加入到队列尾部,等待下一次重试。 实际代码示例 文章中提供了相关的代码示例,包括使用Node.js实现API来接收用户请求、将任务加入队列(producer...
当第一次调用 `getInstance()` 时,它会创建一个新实例并将其存储,之后的调用将返回已存在的实例。 2. **Redis连接**: `CartSingleton` 类的构造函数是私有的,防止外部直接创建对象实例。在构造函数中,实例化了...
它使用 Lazy 初始化模式来确保在第一次使用时连接 Redis,并且缓存连接,以提高性能。`Instance` 属性返回 `ConnectionMultiplexer` 对象,它是与 Redis 服务器交互的基础。 `SimpleRedisQueue` 类封装了对 Redis ...
总结一下,本篇文章介绍了如何使用PHP和Redis实现限制单IP和单用户访问次数的策略。主要涉及的知识点包括: 1. PHP与Redis的连接和授权。 2. 使用Redis的`exists`、`incr`和`expire`方法管理访问计数。 3. 获取...
- `mset`:一次设置多个键值对,`mset key1 value1 key2 value2`等。 - `mget`:获取多个键的值,`mget key1 key2`将返回对应键的值。 - `append`:向已有键的值后面追加内容,`append key val`。 - `type`:...
这个变量记录了已被客户端读取但未确认(ack)的消息,确保消息至少被消费一次,避免在网络传输过程中丢失。 文章还详细解释了消息ID的结构,它由时间戳和序列号组成,例如***-5,表示在***毫秒时间戳生成的第5条...
弹出操作也是原子性的,即这些命令会一次性完成,不会有其他命令插队。 3. 获取列表中元素的个数 - LLEN key:获取列表长度。 当指定的键不存在时,返回0;如果键存在但不是列表类型,将返回错误。 4. 获取列表...
实现文章阅读量统计,12小时内连续访问的IP只记录一次6. 后台引入wangEditor富文本编辑器和editor.md Markdown编辑器,前端使用prism.js进行代码高亮7. Celery + Redis + Supervisor进行异步任务和定时任务的启动和...
其实这个应该叫做绑定QQ,如果之前数据库里面没有QQ用户的信息,那么第一次登录的时候就将这个QQ的信息写到数据库实现绑定的功能,这应该叫先入为主。 之后用户可以修改个人资料,直接上图吧~ 上传完微信...
// 如果是第一次自增,返回true,表示获取到锁 } public void unlock(String key) { redisTemplate.opsForValue().decrement(key); // 释放锁,减1操作 } } ``` 4. **锁超时与公平性**:为了防止死锁,我们...