- 浏览: 322229 次
- 性别:
- 来自: 广东-清远
文章分类
最新评论
-
107x:
不错,可以自己写一个 谢谢!foreach只调用,不返回结 ...
Python中的foreach -
lot1:
part 2? part 3?
Clojure 快速入门指南:1/3 -
superlittlefish:
希望楼主完成剩余工作, 写的太好了.
Clojure 快速入门指南:1/3 -
duolaimifa:
嵌套好像会造成大量数据冗余吧?
MongoDB数据库关系表示和设计:(1)嵌套文档和引用链接 -
eimsteim:
请教一下:如果使用嵌套方式,如果我在被引用的Collectio ...
MongoDB数据库关系表示和设计:(1)嵌套文档和引用链接
注意:此文档已经过期,请移步到 http://huangz.iteye.com/blog/1123512 查看最新翻译。
进度
Redis的官方命令参考共10个部分(Keys, Strings, Hashes, Lists ...)。
计划每3-5天更新一部分,但不保证。
欢迎任何积极性意见和反馈@huangz1990
2011.4.17 Keys部分完成
2011.4.21 Strings部分完成
2011.4.29 Hash部分完成,Redis升级到2.2.5。
KEYS部分
DEL key [key2, ...]
删除指定的key
复杂度:
单个字符串O(1), 多个字符串(数量N)为O(N)。
列表、集合、有序集合和哈希表(list,set,zset,hash)为O(M),M为以上数据结构内的key数量。
返回值:
被移除key的数量。
redis> mset name "huangz" age 20 # 一次set多个key-value OK redis> del name (integer) 1 redis> del age fake_key # fake_key不存在,只有age被删除 (integer) 1
KEYS pattern
查找符合给定模式的key
h?llo命中hello, hallo and hxllo,等。
h*llo命中hllo和heeeeello等。
h[ae]llo命中hello和hallo,但不命中hillo。
特殊符号用"\"隔开
复杂度:
O(N),N为数据库中key的数量。
KEYS的速度非常快,使用一般的手提电脑可以在40毫秒内扫描100万个key。
但在一个大的数据库中频繁使用KEYS命令仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key,你最好还是用集合(set)结构。
返回值:
符合给定模式的key列表。
redis> mset one 1 two 2 three 3 four 4 OK redis> keys *o* 1) "four" 2) "two" 3) "one" redis> keys t?? 1) "two" redis> keys t[w]* 1) "two" redis> keys * # 匹配数据库内所有key 1) "four" 2) "three" 3) "two" 4) "one"
RANDOMKEY
从当前数据库中随机返回一个key
复杂度:
O(1)
返回值:
一个key。
当数据库为空时,返回nil。
redis> mset fruit "apple" drink "beer" food "cookies" OK redis> randomkey "fruit" redis> randomkey "food" redis> flushdb # 删除当前数据库所有key OK redis> randomkey (nil)
TTL key
返回给定key的剩余生存时间。
复杂度:
O(1)
返回值:
剩余生存时间(以秒为单位)。
当key不存在或过期时,返回-1 。
redis> set name "huangz" OK redis> expire name 30 # 设置过期时间为30秒 (integer) 1 redis> get name "huangz" redis> ttl name (integer) 25 redis> get name "huangz" redis> ttl name (integer) 15 redis> ttl name # 30秒过去,name过期 (integer) -1 redis> get name (nil)
EXISTS key
检查给定key是否存在。
复杂度:
O(1)
返回值:
若key存在,返回1。
不存在则返回0 。
redis> set db "redis" OK redis> exists db # key存在 (integer) 1 redis> del db (integer) 1 redis> exists db # key不存在 (integer) 0
MOVE key db
将当前数据库(默认为0)的key移动到指定的数据库db。
如果当前数据库(源数据库)和指定数据库(目标数据库)有相同名字的指定key,或者key不存在于当前数据库,那么MOVE没有任何效果。因此,也可以利用这一特性,将MOVE当作锁(locking)。
复杂度:
O(1)
返回值:
移动成功返回1。
失败则返回0 。
redis> SELECT 0 # redis默认使用数据库0,为了清晰起见,这里再显式指定一次。 OK redis> SET song "secret base - Zone" OK redis> MOVE song 1 # 将song移动到数据库1 (integer) 1 redis> EXISTS song # song已经被移走 (integer) 0 redis> SELECT 1 # 使用数据库1 OK redis:1> EXISTS song # 证实song被移到了数据库1(注意命令操作符变成了"redis:1",表明正在使用数据库1) (integer) 1 # 当key不存在的时候 redis:1> EXISTS fake_key (integer) 0 redis:1> MOVE fake_key 0 # 试图从数据库1移动一个不存在的key到数据库0,失败 (integer) 0 redis:1> select 0 # 使用数据库0 OK redis> EXISTS fake_key # 证实fake_key不存在 (integer) 0 # 当源数据库和目标数据库有相同的key时 redis> SELECT 0 # 使用数据库0 OK redis> SET favorite_fruit "banana" OK redis> SELECT 1 # 使用数据库1 OK redis:1> SET favorite_fruit "apple" OK redis:1> SELECT 0 # 使用数据库0,并试图将favorite_fruit移动到数据库1 OK redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的key,MOVE失败 (integer) 0 redis> GET favorite_fruit # 数据库0的favorite_fruit没变 "banana" redis> SELECT 1 OK redis:1> GET favorite_fruit # 数据库1的favorite_fruit也是 "apple"
redis:1> SET message "hello world" OK redis:1> RENAME message greeting OK redis:1> EXISTS message # message不复存在 (integer) 0 redis:1> EXISTS greeting # greeting取而代之 (integer) 1 # 当key不存在时,返回错误 redis:1> RENAME fake_key never_exists (error) ERR no such key # 当newkey已存在时,RENAME会覆盖旧newkey redis:1> SET pc "lenovo" OK redis:1> SET personal_computer "dell" OK redis:1> RENAME pc personal_computer OK redis:1> GET pc (nil) redis:1> GET personal_computer # dell“没有”了 "lenovo"
redis:1> SET weather "sunny" # 构建一个字符串 OK redis:1> TYPE weather string redis:1> LPUSH book_list "programming in scala" # 构建一个列表 (integer) 1 redis:1> LPUSH book_list "algorithms in C" (integer) 2 redis:1> TYPE book_list list redis:1> SADD pat "dog" # 构建一个集合 (integer) 1 redis:1> TYPE pat set
redis> SET cache_page "www.twitter.com/huangz1990" OK redis> EXPIRE cache_page 30 # 设置30秒后过期 (integer) 1 redis> TTL cache_page (integer) 24 redis> EXPIRE cache_page 30000 # 更新过期时间,30000秒 (integer) 1 redis> TTL cache_page (integer) 29996
redis> SET game "COD" # 一个字符串 OK redis> OBJECT REFCOUNT game # 只有一个引用 (integer) 1 redis> OBJECT IDLETIME game # 空转时间 (integer) 90 redis> GET game # 提取game, 让它处于活跃(active)状态 "COD" redis> OBJECT IDLETIME game # 不再处于空转 (integer) 0 redis> OBJECT ENCODING game # 字符串的编码方式 "raw" redis> SET phone 15820123123 # 长的数字被编码为字符串 OK redis> OBJECT ENCODING phone "raw" redis> SET age 20 # 短数字被编码为int OK redis> OBJECT ENCODING age "int"
# newkey不存在,成功 redis> SET player "MPlyaer" OK redis> EXISTS best_player (integer) 0 redis> RENAMENX player best_player (integer) 1 # newkey存在时,失败 redis> SET animal "bear" OK redis> SET favorite_animal "butterfly" OK redis> RENAMENX animal favorite_animal (integer) 0 redis> get animal "bear" redis> get favorite_animal "butterfly"
redis> SET live_man "fake person" OK redis> EXPIREAT live_man 2000000000 # unix steamp DATE: 05 / 17 / 33 @ 10:33:20pm EST (integer) 1 redis> TTL live_man (integer) 697061482
redis> SET time_to_say_goodbye "oh, please no delete me" OK redis> EXPIRE time_to_say_goodbye 300 (integer) 1 redis> TTL time_to_say_goodbye (integer) 293 redis> PERSIST time_to_say_goodbye (integer) 1 redis> TTL time_to_say_goodbye # 移除成功 (integer) -1
redis> LPUSH today_cost 30 (integer) 1 redis> LPUSH today_cost 1.5 (integer) 2 redis> LPUSH today_cost 10 (integer) 3 redis> LPUSH today_cost 8 (integer) 4 redis> SORT today_cost 1) "1.5" 2) "8" 3) "10" 4) "30"
redis> LPUSH website "www.reddit.com" (integer) 1 redis> LPUSH website "www.slashdot.com" (integer) 2 redis> LPUSH website "www.infoq.com" (integer) 3 # 默认排序 redis> SORT website 1) "www.infoq.com" 2) "www.slashdot.com" 3) "www.reddit.com" # 按字符排序 redis> SORT website ALPHA 1) "www.infoq.com" 2) "www.reddit.com" 3) "www.slashdot.com"
redis> LPUSH rank 30 (integer) 1 redis> LPUSH rank 56 (integer) 2 redis> LPUSH rank 42 (integer) 3 redis> LPUSH rank 22 (integer) 4 redis> LPUSH rank 0 (integer) 5 redis> LPUSH rank 11 (integer) 6 redis> LPUSH rank 32 (integer) 7 redis> LPUSH rank 67 (integer) 8 redis> LPUSH rank 50 (integer) 9 redis> LPUSH rank 44 (integer) 10 redis> LPUSH rank 55 (integer) 11 redis> SORT rank LIMIT 0 5 1) "0" 2) "11" 3) "22" 4) "30" 5) "32"
redis> SORT rank LIMIT 0 5 DESC 1) "78" 2) "67" 3) "56" 4) "55" 5) "50"
# admin redis> LPUSH user_id 1 (integer) 1 redis> SET user_name_1 admin OK redis> SET user_level_1 9999 OK # huangz redis> LPUSH user_id 2 (integer) 2 redis> SET user_name_2 huangz OK redis> SET user_level_2 10 OK # jack redis> LPUSH user_id 59230 (integer) 3 redis> SET user_name_59230 jack OK redis> SET user_level_59230 3 OK # hacker redis> LPUSH user_id 222 (integer) 4 redis> SET user_name_222 hacker OK redis> SET user_level_222 9999 OK
redis> SORT user_id BY user_level_* DESC 1) "222" 2) "1" 3) "2" 4) "59230"
redis> SORT user_id BY user_level_* DESC GET user_name_* 1) "hacker" 2) "admin" 3) "huangz" 4) "jack"
# 先添加一些测试数据 redis> SET user_password_222 "hey,im in" OK redis> SET user_password_1 "a_long_long_password" OK redis> SET user_password_2 "nobodyknows" OK redis> SET user_password_59230 "jack201022" OK # 获取name和password redis> SORT user_id BY user_level_# DESC GET user_name_* GET user_password_* 1) "hacker" # 用户名 2) "hey,im in" # 密码 3) "jack" 4) "jack201022" 5) "huangz" 6) "nobodyknows" 7) "admin" 8) "a_long_long_password" # 注意GET操作是有序的,GET user_name_* GET user_password_* 和 GET user_password_* GET user_name_*返回的结果位置不同 redis> SORT user_id BY user_level_# DESC GET user_password_* GET user_name_* 1) "hey,im in" # 密码 2) "hacker" # 用户名 3) "jack201022" 4) "jack" 5) "nobodyknows" 6) "huangz" 7) "a_long_long_password" 8) "admin"
redis> SORT user_id BY user_level_* DESC GET # GET user_name_* GET user_password_* 1) "222" # id 2) "hacker" # name 3) "hey,im in" # password 4) "1" 5) "admin" 6) "a_long_long_password" 7) "2" 8) "huangz" 9) "nobodyknows" 10) "59230" 11) "jack" 12) "jack201022"
# 确保fake_key不存在 redis> EXISTS fake_key (integer) 0 # 以fake_key作BY参数,不排序,只GET name 和 GET password redis> SORT user_id BY fake_key GET # GET user_name_* GET user_password_* 1) "222" 2) "hacker" 3) "hey,im in" 4) "59230" 5) "jack" 6) "jack201022" 7) "2" 8) "huangz" 9) "nobodyknows" 10) "1" 11) "admin" 12) "a_long_long_password"
redis> EXISTS user_info_sorted_by_level # 确保指定key不存在 (integer) 0 redis> SORT user_id BY user_level_* GET # GET user_name_* GET user_password_* STORE user_info_sorted_by_level # 排序 (integer) 12 # 显示有12条结果被保存了 redis> LRANGE user_info_sorted_by_level 0 11 # 查看排序结果 1) "59230" 2) "jack" 3) "jack201022" 4) "2" 5) "huangz" 6) "nobodyknows" 7) "222" 8) "hacker" 9) "hey,im in" 10) "1" 11) "admin" 12) "a_long_long_password"
# 假设现在我们的用户表新增了一个serial项来为作为每个用户的序列号 # 序列号以哈希表的形式保存在serial哈希域内。 redis> HMSET serial 1 23131283 2 23810573 222 502342349 59230 2435829758 OK # 我们希望以比较serial中的大小来作为排序user_id的方式 redis> SORT user_id BY *->serial 1) "222" 2) "59230" 3) "2" 4) "1"
发表评论
-
Redis 命令参考 2.6 版本发布
2012-04-02 14:21 2342经过两周紧张的工作之后, Redis 命令参考终于 ... -
《 Redis命令参考》全文翻译完毕
2011-12-17 20:17 2661很高兴地告诉各位,对《Redis Command Refere ... -
Redis命令参考(Commands Reference)中文翻译【Set部分】
2011-06-17 11:53 3429注意:此文档已经过期,请移步到 http://huangz.i ... -
Redis命令参考(Commands Reference)中文翻译【Hash部分】
2011-06-07 09:57 5661注意:此文档已经过期,请移步到 http://huangz.i ... -
Redis命令参考(Commands Reference)中文翻译【String部分】
2011-06-07 09:55 3551注意:此文档已经过期,请移步到 http://huangz.i ... -
【进行中】Redis命令参考(Commands Reference)中文翻译【List部分】
2011-05-13 09:09 2249注意:此文档已经过期,请移步到 http://huangz.i ...
相关推荐
java源码资源手机游戏J2ME毕业设计提取方式是百度网盘分享地址
内容概要:本章节深入探讨了存储器管理和相关概念。首先介绍了存储器的多层次结构,涵盖了寄存器、主存和辅助存储的区别及其功能。接下来讨论了主存储器、寄存器的功能和角色,包括二者如何支持程序运行及数据处理。之后分析了高速缓存和磁盘缓存的运作机制及其优化计算机性能的方式。接着概述了程序的装入、链接、地址绑定、内存保护的技术细节。此外,文章还讲述了存储器管理的高级技巧如对换技术、覆盖技术和不同的分配方式,以及各种存储管理模式的具体实施方式,比如连续分配、分页、分段及段页组合。 适用人群:对操作系统内部工作原理有一定兴趣的计算机专业学生、技术人员及爱好者。 使用场景及目标:适用于课程学习和项目实践中,帮助理解和设计复杂的存储管理系统。通过本文的学习可以达到对操作系统底层存储管理的理解,掌握不同存储分配策略的选择标准和技术应用。 阅读建议:建议逐步阅读每个小节,重点关注各部分内容的实际应用场景及其背后的设计理念。同时,尝试绘制存储层次模型和不同管理策略的工作流程图,加深理解。
gradle611all.zip.png
onnxruntime-1.16.0-cp39-cp39-win_amd64.whl
ASP.NET大型商城系统源码带数据库文档 1.开发环境:vs2010 + slq2005/2008 2.首先在SQL2005建立一个空白数据库。 3.有VS2010 打开项目,直接调试,根据出现提示建立数据库。 4.第3点出现的页面的管理员用户和密码就是后期软件的登陆帐户和密码。 5.本系统有两套模版,在店铺管理 - 页面设置 这里做修改 6.如果觉得自己的系统是空数据库,想弄成和演示的一样,那就将doc/database下面的数据库直接还原就可以了。 7.还原后的数据库登陆帐户和密码分别是:admin888 admin888
ASP.NET酒店管理系统源码(WPF) 一、源码特点 采用WPF进行开发的酒店管理系统源码,界面相当美观,功能齐全 二、菜单功能 1、预订登记:可选择入住时间、离店时间、所在城市、证件类型,保存、删除、查询、返回 2、住宿结算:新增入住、保存、删除、查询、返回 3、今日盘点:查询、返回 4、查询统计: 5、房间管理:增加房间类型、删除类型、增加房间、删除房间、保存、返回 6、用户管理:增加用户、删除用户、保存、返回 7、系统配置:基本功能 8、显示当前系统时间等功能的实现
资源quazip.dll
汽车货运管理系统源码 货运公司车辆管理系统源码 货运公司管理系统采用winform C# 技术开发,数据库Sqlserver2008R2,同时兼容Mysql。 更新日志: 1.修改新增数据异常。 2.增加安装部署工程。 包括如下功能模块: 一、输入功能: 该系统提供了对基本信息录入、车辆登记录入、车辆各项费用录入、驾驶员登记录入、车辆出回车录入、主卡分卡充值录入、加油登记录入,配件信息录入等的模式录入和表格界面录入。在出现从表信息录入时会出现表格界面的录入方式其录入方式同模式录入方式一样。录入信息时可能会出现相同的信息,为避免重复录入部分字段设置了辅助录入功能,您只需输入几项即可完成录入功能。操作方便快捷,可大大提高您的工作效率。 二、查询功能: 您只需用鼠标点击一下相应节点,就可迅速查询统计销售的情况,根据不同的查询统计条件显示出需要的结果。 三、报表功能: 根据查询或者统计出来的结果生成报表。 四:打印功能: 系统支持打印功能,如想打印信息单击预览报表上的打印按钮即可。 五、安全功能: 进入系统后,单击菜单“系统→工具→用户及权限”可以设置系统的各用
基于springboot+vue的大学生创业项目的信息管理系统源码数据库文档.zip
numpy-1.25.2-cp311-cp311-linux_armv7l.whl
STM32神舟III号例程源码SD读卡器(神舟III号-库函数版)提取方式是百度网盘分享地址
numpy-1.20.0-cp37-cp37m-linux_armv7l.whl
matplotlib-3.7.5-cp39-cp39-linux_armv7l.whl
onnxruntime-1.16.3-cp38-cp38-win_amd64.whl
环境说明: 开发语言:nodejs 框架:Express 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:VS code/HBuilder X
功能说明: 系统主要包括首页、个人中心、用户管理、商家管理、药品信息管理、药品分类管理、发票信息管理、系统管理等功能模块。 环境说明: 开发语言:Java 服务器:tomcat7及以上 JDK版本:JDK1.8 数据库:mysql 5.7数据库工具:Navicat11及以上 开发软件:eclipse/idea 小程序框架:uniapp/原生小程序 开发工具:HBuilder X/微信开发者
《基于Servlet和JSP实现的登录Demo》项目是一个简单的 Java Web 应用示例,展示了如何使用 Servlet 和 JSP 搭建基础的用户登录功能。项目通过 Java Servlet 处理用户请求,使用 JSP 构建前端页面,并结合 MySQL 数据库验证用户身份。用户可以通过登录页面提交账号和密码,后端接口会对用户输入进行校验,并返回登录结果。本项目适合 Java Web 初学者,旨在帮助学习 Servlet 和 JSP 的基础用法,掌握表单提交、请求转发、数据库连接等关键技术点。项目环境包括 IntelliJ IDEA、Apache Tomcat 和 MySQL,支持 JDK 8 及以上版本。
1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/143733939 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
pillow-10.3.0-cp39-cp39-linux_armv7l.whl
opencv_contrib_python-4.5.1.48-cp39-cp39-linux_armv7l.whl