文档章节

Redis之KEY操作命令 【学习笔记】

党程V
 党程V
发布于 2014/12/05 17:30
字数 1686
阅读 8303
收藏 15

#开启服务 $sudo ./src/redis-server &

################################## #键操作 ##################################

*定义并赋值变量苹果的数量 $ redis-cli set dangcheng::apple::count 152 OK

*获取刚才的苹果数量 $ redis-cli get dangcheng::apple::count "152"

*当苹果数量增加1 incr关键字实际上是increment的简写 $ redis-cli incr dangcheng::apple::count (integer) 153

*当苹果来了一盒,而这盒苹果共7个则我们需要加上指定数量关键字是incrby $ redis-cli incrby dangcheng::apple::count 7 (integer) 160

*如果set一个php数组 我们可以使用php函数serialize将对象序列化后写入 $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); $age_str = seriallze($age);//将这个结果写入redias中 $age = unseriallze($age_str);//get获取后我们可以使用unseriallze反序列化把其转换为PHP对象

#EXISTS key 是否存在 *存在返回 1 $ redis-cli exists dangcheng::apple::count (integer) 1 *不存在返回 0 $ redis-cli exists dangcheng::apple::color (integer) 0

#DUMP序列化值 不包含任何生命周期信息 *不存在返回nil $ redis-cli dump dangcheng::apple::color (nil) *返回序列化结果 $redis-cli dump dangcheng::apple::count "\x00\xc1\xa0\x00\x06\x00\xb0t6\xdaT\x99#\xa2"

#expire 和 ttl 设置生命期和查看剩余时间 *TTL命令是查询生存时间剩余,不设置生存时间返回-1代表永久 $ redis-cli ttl dangcheng::apple::count (integer) -1 *用expire设置生存时间剩余366秒 $ redis-cli expire dangcheng::apple::count 366 (integer) 1 *写这段的过程中消耗了127秒 $ redis-cli ttl dangcheng::apple::count (integer) 239 *PS1:此外还有PEXPIRE命令与expire功能是一样的,只是设置是以毫秒为单位 *PS2:此外还有PTTL命令与TTL功能是一样的,只是显示是以毫秒为单位

#expireat *此命令不同于expire去设定剩余,而是直接设置当前key什么时候死亡 而参数是linux时间戳表示 *PS:pexpireat 命令与expireat命令等效,区别是单位精确到毫秒数的unix时间戳

#keys 查找所有符合给定模式 pattern 的 key *KEYS * 匹配数据库中所有 key 。 *KEYS h?llo 匹配 hello , hallo 和 hxllo 等。 KEYS hllo 匹配 hllo 和 heeeeello 等。 *KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。 特殊符号用 \ 隔开 $ redis-cli keys dangcheng::

  1. "dangcheng::apple::color"
  2. "dangcheng::apple::count"

#migrate 将当前redis实例中的对象迁移到另一个host下的对应端口的实例【数据的迁移】 *在本机8888端口创建另一个redis服务 $ redis-server --port 8888 & [1] 13086 原有实例中存在 $ redis-cli 127.0.0.1:6379> keys dangcheng::

  1. "dangcheng::apple::color"
  2. "dangcheng::apple::count"

8888端口下的实例中找不到数据 $ redis-cli -p 8888 127.0.0.1:8888> keys dangcheng (empty list or set) *将源实例中的数据count传入8888端口的实例 127.0.0.1:6379> migrate 127.0.0.1 8888 dangcheng::apple::count 0 -1 OK 源实例中的count不见了,证明传输源会被删掉 127.0.0.1:6379> keys dangcheng

  1. "dangcheng::apple::color" *在8888端口下的实例中查到了 127.0.0.1:8888> get dangcheng::apple::count "25"

#move 将数据从一个db空间中迁移到另一个db空间中 *选择index0的dbspace 127.0.0.1:6379> select 0 OK 127.0.0.1:6379> keys *

  1. "dangcheng::apple::color"
  2. "test::first" *移动到index1的dbspace 127.0.0.1:6379> move test::first 1 (integer) 1 127.0.0.1:6379> keys *
  3. "dangcheng::apple::color" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys *
  4. "test::first" *我们看到了的确在dbsopace1中查询到了 127.0.0.1:6379[1]> get test::first "556779" *PS:要注意的是如果target db 有相同的key 则移动不会成功

#OBJECT 对象操作 *返回给定 key 引用所储存的值的次数。此命令主要用于除错 127.0.0.1:6379[1]> object refcount test::first (integer) 1

  • 返回给定 key 锁储存的值所使用的内部表示(representation)。 127.0.0.1:6379[1]> object encoding test::first "int" 127.0.0.1:6379[1]> set str 'hello redis!' OK 127.0.0.1:6379[1]> object encoding str "raw" *返回给定 key 自储存以来的空闲时间(idle, 没有被读取也没有被写入),以秒为单位 127.0.0.1:6379[1]> object idletime str (integer) 236 *对象可以以多种方式编码: *字符串可以被编码为 raw (一般字符串)或 int (为了节约内存,Redis 会将字符串表示的 64 位有符号整数编码为整数来进行储存)。 *列表可以被编码为 ziplist 或 linkedlist 。 ziplist 是为节约大小较小的列表空间而作的特殊表示。 *集合可以被编码为 intset 或者 hashtable 。 intset 是只储存数字的小集合的特殊表示。 *哈希表可以编码为 zipmap 或者 hashtable 。 zipmap 是小哈希表的特殊表示。 *有序集合可以被编码为 ziplist 或者 skiplist 格式。 ziplist 用于表示小的有序集合,而 skiplist 则用于表示任何大小的有序集合。 #persist 将一个key的超时时间变为永久 *使用expire 给对象设置生存时间 127.0.0.1:6379[1]> expire test::first 3600 (integer) 1 *查询剩余时间 127.0.0.1:6379[1]> ttl test::first (integer) 3597 127.0.0.1:6379[1]> persist test::first (integer) 1 *的确变为了持久化key 127.0.0.1:6379[1]> ttl test::first (integer) -1

*randomkey 随机抽取一个key 127.0.0.1:6379> randomkey "dangcheng::apple::color2" 127.0.0.1:6379> randomkey "dangcheng::apple::color" 127.0.0.1:6379> randomkey "dangcheng::apple::color1"

#mset[multi set] 批量设置 127.0.0.1:8888> mset a 'aaa' b 'bbb' c 'cccc' OK *查询所有key 127.0.0.1:8888> keys *

  1. "dangcheng::apple::count"
  2. "o"
  3. "a"
  4. "b"
  5. "c" *清空dbspace 127.0.0.1:8888> flushdb OK *查看所有,很显然没有了 127.0.0.1:8888> keys * (empty list or set)

#rename 修改key名字 127.0.0.1:6379> set a 'aaa' OK 127.0.0.1:6379> rename a b OK 127.0.0.1:6379> get a (nil) 127.0.0.1:6379> get b "aaa"

#renamenx 目标key一旦已存在不会被覆盖 只有空的key才能成为target 127.0.0.1:6379> renamenx b c (integer) 0 127.0.0.1:6379> get c "66" 127.0.0.1:6379> get b "bb" 127.0.0.1:6379> renamenx b d (integer) 1 127.0.0.1:6379> get d "bb" 127.0.0.1:6379> getb (error) ERR unknown command 'getb' 127.0.0.1:6379> get b (nil)

#dump&restore 序列化和反序列化 127.0.0.1:6379> dump c "\x00\xc0B\x06\x00\xac\x15Y\x1aO<B\xa5" 127.0.0.1:6379> get c "66" *序列化c中的值 127.0.0.1:6379> dump c "\x00\xc0B\x06\x00\xac\x15Y\x1aO<B\xa5" *通过反序列化一个值创建新的键 newc 127.0.0.1:6379> restore newc 0 "\x00\xc0B\x06\x00\xac\x15Y\x1aO<B\xa5" OK 127.0.0.1:6379> get newc "66"

#sort [asc|desc] [alpha][limit]给一个列表进行排序 默认为asc方式,使用alpha方式可以给字符串进行排序,此外还可以使用limit进行范围限制 *lpush 是用于创建一个列表的命令 127.0.0.1:6379> lpush sort_list 15 2 45 20 16 3 7 9 (integer) 8 127.0.0.1:6379> sort sort_list

  1. "2"
  2. "3"
  3. "7"
  4. "9"
  5. "15"
  6. "16"
  7. "20"
  8. "45" 127.0.0.1:6379> sort sort_list asc
  9. "2"
  10. "3"
  11. "7"
  12. "9"
  13. "15"
  14. "16"
  15. "20"
  16. "45" 127.0.0.1:6379> sort sort_list desc
  17. "45"
  18. "20"
  19. "16"
  20. "15"
  21. "9"
  22. "7"
  23. "3"
  24. "2"

#type 查看key的数据类型 *@return none (key不存在) |string (字符串)|list (列表)|set (集合)|zset (有序集)|hash (哈希表) 127.0.0.1:6379> type sort_list list 127.0.0.1:6379> type c string

© 著作权归作者所有

党程V
粉丝 5
博文 20
码字总数 9126
作品 0
西安
高级程序员
私信 提问
redis——redis事务相关处理

事务 Redis事务的相关命令有MULTI,EXEC,DISCARD,WATCH。它们允许在一个步骤中执行一组命令,并有两个重要的保证: 事务中的所有命令都会被序列化并按顺序执行。在执行Redis事务的过程中,...

sm9sun
2018/05/14
0
0
Redis 文档阅读笔记 (一)

1. Pipelining Redis是一个TCPServer,使用CS模型 1次请求将命令集合发送,Redis执行命令后将结果队列化后,再写入返回 队列化执行结果需要使用内存,如果多次大批量操作需要注意内存的使用 使用...

whales
2017/11/12
0
0
redis系列:通过demo学习string命令

前言 该文章将通过一个小demo将讲述Redis中的string类型命令。demo将以springboot为后台框架快速开发,iview前端框架进行简单的页面设计,为了方便就不使用DB存储数据了,直接采用Redis作为存...

云枭zd
2018/07/19
0
0
redis命令及对应jedis操作(一)-String类型

我们知道学习编程知识,先要搭建环境,首先需要下载redis工具包,下载时需要注意,redis的偶数版是表示稳定版(2.4,2.6等),奇数版表示非稳定版(2.5,2.7等),我下载的是2.6的,最新版本...

laoyao
2014/07/26
1K
3
Jedis cluster命令执行流程剖析

在Redis Cluster集群模式下,由于key分布在各个节点上,会造成无法直接实现mget、sInter等功能。因此,无论我们使用什么客户端来操作Redis,都要考虑单一key命令操作、批量key命令操作和多节...

九州暮云
2017/11/02
809
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
39分钟前
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
4
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部