学习Redis:入门篇
Redis(Remote Dictionary Server)是一款基于内存的数据结构存储系统,被广泛应用于互联网缓存、消息队列、计数器、排行榜等场景。本篇文章将介绍如何使用Redis进行基本操作。
环境准备
在学习Redis之前,需要先安装Redis。可以在官网下载Redis的安装包并进行安装。安装完成后,在终端中输入redis-cli命令即可启动Redis服务。
Redis基本操作
1. 设置键值对
在Redis中,可以使用SET命令设置键值对。例如,设置一个键名为”foo”,键值为”bar”的键值对,可以在终端中输入以下命令:
127.0.0.1:6379> SET foo barOK
其中,127.0.0.1表示本机IP地址,6379为Redis的默认端口号。输出的OK表示设置成功。
2. 获取键值
可以使用GET命令获取某个键的值。例如,获取键名为”foo”的键值,可以在终端中输入以下命令:
127.0.0.1:6379> GET foo"bar"
输出的”bar”即为键名为”foo”的键值。
3. 删除键值对
可以使用DEL命令删除某个键值对。例如,删除键名为”foo”的键值对,可以在终端中输入以下命令:
127.0.0.1:6379> DEL foo(integer) 1
其中,输出的1表示删除成功。
4. 设置过期时间
可以使用expIRE命令设置某个键值对的过期时间。例如,设置键名为”foo”的键值过期时间为10秒,可以在终端中输入以下命令:
127.0.0.1:6379> SET foo barOK127.0.0.1:6379> EXPIRE foo 10(integer) 1
其中,输出的1表示设置成功。在10秒后,再次执行GET命令时,将返回空值。
5. 自增自减操作
可以使用INCR命令对某个键的值进行自增操作,使用DECR命令对某个键的值进行自减操作。例如,对键名为”number”的键的值进行自增操作,可以在终端中输入以下命令:
127.0.0.1:6379> SET number 1OK127.0.0.1:6379> INCR number(integer) 2
其中,输出的2即为自增后的值。
练习题
1. 如何使用Redis设置一个键名为”name”,值为”Lucy”,过期时间为30秒的键值对?
答案:
127.0.0.1:6379> SET name LucyOK127.0.0.1:6379> EXPIRE name 30(integer) 1
2. 如何使用Redis对键名为”count”的键的值进行自减操作?

答案:
127.0.0.1:6379> DECR count(integer) xxx
其中,xxx为自减后的值。
总结
本篇文章介绍了Redis的基本操作,包括设置键值对、获取键值、删除键值对、设置过期时间和自增自减操作。在实际的应用中,Redis还有更多更丰富的操作,可以通过阅读Redis的官方文档深入了解。同时,也可以通过安装Redis的客户端,如Java的Jedis库来操作Redis。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.NET)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
参加模特培训,没有基础可以吗?
呵呵,没关系的。 参加模特培训不需要什么其他基础,没有基础完全可以参加模特培训的。 我现在在哈尔滨新丝路模特培训学校接受这边正规的模特培训。 我从小就学习舞蹈,后来随着自己长的越来越高,父母也想让我多学点东西,就来参加模特培训了。 本来觉得自己一身的舞蹈功底对学习模特很有优势,可是后来在模特培训中才发现对于模特的培训,只是身体协调性好一点,其他的完全用不上。 所以没关系,让她来吧,我们一起进行模特培训,更好的锻炼自己。
redis对象操作setTimeout(),在哪里可以查到用法?
redis对象操作setTimeout()的用法如下:setTimeout, expire设定一个key的活动时间(s)$redis->setTimeout(x, 3);有关redis的一系列set操作总结如下://SET 集合的相关操作// sadd 集合添加数据 初始化数据for($i=0; $i < 10 ; $i++){$redis->sadd(myset,$i+rand(10,99));}//srem 删除集合中的一个元素$bool = $redis->srem(myset,16);echo (int) $bool;//sMove 将value元素从名称为srckey的集合移到名称为dstkey的集合$bool = $redis->sMove(myset, myset1, 35);echo $bool;//smembers 显示集合中的元素$data = $redis->smembers(myset);// sIsMember, sContains 名称为key的集合中查找是否有value元素,有ture 没有 false$bool = $redis->sismember(myset,555);echo (int)$bool;//scard ssize集合key元素的个数echo $redis->scard(myset); //sInterStore//求交集并将交集保存到output的集合//$redis->sInterStore(output, key1, key2, key3)$redis->sinterstore(output,myset,myset1);$data = $redis->smembers(output);echo
;print_r($data);// sUnionStore求并集并将并集保存到output的集合//$redis->sUnionStore(output, key1, key2, key3);$redis->sunionstore(uoutput,myset,myset1);$data = $redis->smembers(uoutput);echo;print_r($data);//sort// 排序,分页等// 参数// by => some_pattern_*,// liMIT => array(0, 1),// get => some_oTher_pattern_* or an array of patterns,// sort => asc or desc,// alpha => TRUE,// store => external-key$data = $redis->sort(myset,array(sort=>desc));echo;print_r($data);//ZSET 有序集合的相关操作//zadd添加元素 zAdd(key, score, member):for($i=0; $i < 10 ; $i++){$redis->zadd(zset,$i+rand(10,99),$i+rand(100,999));}//zrangezRange(key, start, end,withscores) 返回指定范围的元素//zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素: 是否输出socre的值,默认false,不输出//zRangeByScore, zRevRangeByScore//$redis->zRangeByScore(key, star, end, array(withscores, limit ));//返回名称为key的zset中score >= star且score <= end的所有元素$data = $redis->zrange(zset,0,3,withscores);//end -1 返回所有元素加withscoreswithscores做值 使用echo;print_r($data);//zDelete, zRem//zRem(key, member) :删除名称为key的zset中的元素member$redis->zrem(zset,456);//zCount//$redis->zCount(key, star, end);//返回名称为key的zset中score >= star且score <= end的所有元素的个数echo $redis->zcount(zset,10,50);//zRemRangeByScore, zDeleteRangeByScore$redis->zRemRangeByScore(key, star, end);//zremrangebyscore 删除 socre 大于star score 小于 end d的元素//删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数//zScore 返回名称为key的zset中元素val2的scoreecho $redis->zScore(zset, 503);//zRank, zRevRankzrank(set,value) 返回value 在集合中的位置 索引从0开始echo$redis->zrank(zset,723);//zIncrBy//$redis->zIncrBy(key, increment, member);//如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment//zUnion/zInter 就集合的合集和交集//HASH 哈希的相关操作//hset 初始化数据for( $i=0; $i < 10 ;$i++){$redis->hset(myhash,$i,rand(10,99)+$i);}//hget(myhash,key1) 返回哈希 myhash 中键为key1的对应的数值echo $redis->hget(myhash,0);//hLen 返回名称为h的hash中元素个数echo $redis->hlen(myhash);//hDel 删除名称为h的hash中键为key1的域echo $redis->hdel(myhash,0);// hKeys返回名称为key的hash中所有键$data = $redis->hkeys(myhash);//hVals返回名称为h的hash中所有键对应的value$data = $redis->hvals(myhash);//hGetAll 返回名称为h的hash中所有的键(field)及其对应的value$data = $redis->hgetall(myhash);echo;print_r($data);//hExists 判断某个hash的对应的键是否存在echo $redis->hexists(myhash,0);//hMset 向名称为key的hash中批量添加元素$redis->hmset(user:1,array(name1=>name1,name2=>Joe2));//hMGet 返回名称为h的hash中field1,field2对应的value$data = $redis->hmget(user:1, array(name, salary));echo;print_r($data);//Redis 相关操作//flushDB 清空当前数据库//flushAll 清空所有数据库//select 选择数据库//$redis->select(0);//move 把key1 移动到数据库2 $redis->move(key1,2);//rename, renameKey 给key从新命名//renameNx与remane类似,但是,如果重新命名的名字已经存在,不会替换成功//setTimeout, expire 设置key的生命时间$redis->settimeout(user:1,10);//expireat 指定一个key的生命时间为一个时间戳//expireAtkey存活到一个unix时间戳时间$redis->expireat(myhash,time()+ 10);//dbSize查看现在数据库有多少key $count = $redis->dbSize();//auth 密码认证$redis->auth(foobared);//bgrewriteaof使用aof来进行数据库持久化$redis->bgrewriteaof();//slaveof 通过执行 SLAVEOF host port 命令,可以将当前服务器转变为指定服务器的从属服务器(slave server)。$redis->slaveof(10.0.1.7, 6379);//save将数据同步保存到磁盘//bgsave 将数据异步保存到磁盘//lastSave返回上次成功将数据保存到磁盘的Unix时戳//info 返回redis的版本信息等详情echo;print_r($redis->info());// type 返回key的类型值 1-5 //string: Redis::REDIS_STRING 1//set: Redis::REDIS_SET 2//list: Redis::REDIS_LIST 3//zset: Redis::REDIS_ZSET 4//hash: Redis::REDIS_HASH 5//other: Redis::REDIS_NOT_FOUND 6echo $redis->type(myset); //2REDIS学习查看redis状态,以及rdb和aof两种持久化方案的区别
命令:redis-cli info //查看redis服务器状态的rdb : redis database 默认开启的,是将数据从内存备份到硬盘中。 aof:append only f 需要自己根据需要开启,是将执行命令存储在一个文件中。 建议看一下apeit-程序猿IT的文章《redis数据持久化》,讲的简单明了。
发表评论