一些废话1、Redis是一个开源的、基于key-value的存储系统,具有多种数据结构和丰富的功能。2、Redis支持持久化,掉电数据不丢失,数据更新异步保存到磁盘。3、Redis支持字符串、哈希、列表、集合、有序集合、位图、超小内存唯一计数、地理信息定位。4、Redis支持多语言客户端,支持发布订阅,Lua脚本,things,不依赖外部库,单线程模型,支持主从复制,高可用,分布式。5、Redis的典型使用场景包括缓存系统、计数器、消息队列系统、排行榜、社交网络、实时系统。6、启动方式分为最简单的启动redis-server动态参数redis-server--port6380配置文件redis-serverconfigPath7、验证是否启动ps-ef|grepredisnetstat-antpl|grepredisredis-cli-hip-pportping8.Redis客户端的返回值包括状态回复、错误回复、整数回复、字符串回复、多行字符串回复。9.常用的配置daemonize是一个daemonportexternalportlogfilelogdirworkingdirectory10.一次只运行一个命令,拒绝又长又慢的命令,不要轻易执行keys、flushdb、flushall、showluascript等。11、其实redis并不是单线程的。例如下面的APIfysnc文件描述符,关闭文件描述符RedisAPI1。通用命令keys:计算所有keysO(n)dbsize:数据库大小existskeys:key是否存在del:删除keyexpirekeyseconds:设置过期时间typekey:获取key的数据类型ttlkey:查看剩余过期时间ofthekeypersistkey:去掉key的过期时间2.Listtyperpushkeyvalue1value2valueNO(1-n)lpushkeyvalue1value2valueNO(1-n)linsertkeybefore|aftervaluenewValueO(n)lpopkeyrpopkeylremkeycountvalue(删除count值元素)0(n)ltrimkeystartend(根据索引范围修剪列表)o(n)lrangekeystartend(includeend)(获取列表指定索引range)lindex键索引o(n)llenkeylset键索引newValueblpop键超时(lpop的阻塞版本)brpop键超时(rpop的阻塞版本)lpush+lpop=stacklpush+rpop=queuepush+ltrim=CappedCollectionlpush+brpop=消息队列3.String类型场景:缓存、计数器、分布式锁getkeysetkeyvalueincrkeydecrkeyincrbykeykdecrbykeyksetnxkeyvaluevaluedoesnotexistonlysetkeyvaluevaluexxonlyexistsonlysetmget批量获取O(n)mset批量设置O(n)getsetkeynewvalue设置新值并返回旧值appendkeyvalueAppend新值到旧值strlen得到值的长度incrbyfloatkey3.5增加对应的key3.5getrangekeystartendsetrangekeystartvalue4.集合类型无序不重复,支持集合间操作saddkeyelement(添加)sremkeyelement(删除)scardkeysismemberkeyelementsrandmemberkeycount(随机选择count个元素)spopkey(随机弹出一个元素)smembers键(删除所有元素并谨慎使用)sscan(遍历集合)sdiffdifferencesinterintersectionsunionunionsadd=labelspop/srandmember=randomsadd+sinter=SocialGraph5.有序集类型zaddkeyscoreelementO(logN)zremkeyelement(删除)zscorekeyelementzincrbykeyincreScoreelement(增加分数)zcardkey(返回数)zrangekeystartendwithscores(getelement)(O(logN+m))zrangebyscorekeyminScoremaxScorezcountkeyminScoremaxScore(O(logN+m))zremrangebyrankkeystartend(删除指定rank内的升序元素)zremrangebyscorekeystartend(删除指定score内的升序元素)zrevrankzrevrangezrevrangebyscorezinterstorezunionstore6.哈希类型hgetkeyfiledhsetkeyfieldvaluehdelkeyfieldhgetallkeyO(n)hexistskeyfieldhlenkey获取字段个数hmgetkeyfield1field2O(n)hmsetkeyfield1value1field2value2O(n)hincrbykeyfieldvaluehvalskey返回值所有字段对应的hashkey的O(n)hkeyskey返回hashkey对应的所有字段O(n)hsetnxkeyfieldvaluehincrbykeyfieldintCounterhincrbyfloatkeyfieldfloatCounter
