本文共 3816 字,大约阅读时间需要 12 分钟。
常用操作:
redis-server /usr/local/redis/redis.conf :指定配置文件启动clear:清屏select+库角标:选择数据库dbsize:当前数据库中key的数量keys *:所有键keys k*:以k开头的所有键exists key:键是否存在move key 库角标:把key剪切到角标数据库中expire key 秒钟:为给定key设置过期时间ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期type key:查看key是什么类型del key:删除key
string类型:
二进制安全:string可以包含任何数据 一个字符串value最多可以是512M 一个key对应一个value,可以保存任何类型的数据,如:jpg图片,序列化对象 字符的下标是从0开始的set/get/del/append/strlenincr/decr/incrby/decrbygetrange/setrangesetex(set with expire)/setnx(set if not exist)mset/mget/msetnx(m:more)getset(先get再set)set 设置一个键值对 set name zhaoliusetnx 当且仅当键不存在时设置一个键值对,并返回1,否则返回0 setnx name zhaoliusetex key time valuesetrange 替换指定key的value值的字符串 setrange name 4 @qq.com 从下标为4的位置开始 当替换的长度小于原长度时,原字符串的多出来的内容不变mset 一次设置多个key-value,全部成功返回1,否则返回0,任何一个出现问题都保存不成功 mset key1 lisi ket2 wangwu key3 zhaoliumsetnx 一次设置多个key-value,当且仅当键不存在时返回1,否则返回0,任何一个已经存在,就保存不了。get get keygetset 设置key的值,并返回一个key的旧值 getset key 20 设置key为20,并获取key之前的值getrange 返回key的子字符串getrange key 0 5 key的第0个字到第5个字符,一共6个字符mget 批量获取mget key1 key2 key3incr 自增1 incr keyincrby incrby key 6 如果之前没有值,默认是0decrdecrbyappend 给key的value追加value,返回value长度 append key .comstrlen 取key的value的长度 strlen key
hash类型
类似于java中的map,string类型的filed和value的映射表,特别适合存储对象 kv模式不变,但v是一个键值对kvhset/hget/hmset/hgetall/hdelhlenhexists key 在key中的某个值的keyhkeys/hvalshincrby/hincrbyfloathsetnxhset 设置hash filed为指定值 hset user:001 name yzhget 获取 hget user:001 name 得到yzhsetnx 当且仅当键不存在时设置 hsetnx user:001 name yzhmset 同时设置hash的多个field hmset user:001 name yz age 22 sex nanhmget 批量返回hash的多个field hmget user:001 name age sexhincrby 对hash的field加上值 hincrby user:001 age 5hexists 测试指定field是否存在 hexists user:001 address 存在返回1,不存在返回0hlen hash表里所有存在的field的数量 hlen user:001hdel 删除指定hash的field hdel user:001 agehkeys 返回hash的所有field,不是值 hkeys user:001hvals 返回hash的所有field的值 hvals user:001hgetall 获取某个hash中全部的field及value
list类型
list是一个链表结构,可以左右添加等操作。主要功能是push、pop、获取一个范围的所有值等等 操作中的key为链表的名称。是一个双向string链表(l:left/r:right)lpush/rpush/lrangelpop/rpop/rpoplpushlindex,按照索引下标获得元素(从上到下)llenlrem key n v :删N个valueltrim key index1 index2 :保留index1到index2之间的value到keylset key index valuelinsert key before/after 值1 值2lpush 在key对应的list的栈顶添加字符串元素 lpush mylist "world" lpush mylist "hello" lpush list 1 2 3 4 5:先存1再存2……lrange取出的顺序是存入的反向 最后一个是头部lrange lrange 0 -1 代表从头到尾部,取出元素 hello worldrpush 在key对应的list的尾部添加字符串元素 rpush mylist "world" rpush mylist "hello" rpush list 1 2 3 4 5:先存1再存2……lrange取出与存入的顺序相同 最后一个是尾部linsert 在某个元素前面插入一个元素 linsert mylist before "world" "hello"在world前面插入hellolset 设置指定下标(默认从0开始)的元素 lset mylist 1 "hi"lrem 从list中删除n个和value相同的值,并返回删除的个数,不成功返回0 lrem mylist 3 "one" 从mylist里面删除3个one元素ltrim 保留第k个到第n个值到key ltrim mylist start end 返回OK表示成功 start=k-1lpop 从list的栈顶删除一个元素 lpop mylist 返回删除的元素rpop 从list的尾部删除一个元素 rpop mylist 返回删除的元素rpoplpush 从第一个list尾部删除元素并添加到第二个list头部 rpoplpush firstlist secondlistlindex 返回index位置的元素 lindex mylist indexllen 返回list的size llen mylist
set
无序无重复集合sadd/smembers/sismemberscard key:获取集合里面有多少个元素srem key value:删除集合中元素srandmember key n:在key里面随机出n个valuespop key:随机出栈smove key1 key2 value1:将key1中的value1赋给key2差集sdiff:sdiff key1 key2,在key1中不在key2中交集sinter:sinter key1 key2,key1和key2中都有补集sunion:sunion key1 key2,所有不重复的valuesadd set01 1 1 2 2 3 3 返回(integer)3smembers set01 返回"1" "2" "3"smembers key:返回所有valuesismember key value:value是否是key里面的成员
zset
有序集合 zset和set是string类型元素的集合,且不允许重复的成员 不同的是每个元素都会关联一个double类型的分数 redis是通过分数来为集合中的成员进行从小到大的排序 zset的成员是唯一的,但分数却可以重复zadd/zrange[withscores]zrangebyscore key [(]startscore [(]endscore [limit n m]:(表示大于或者小于,n表示从结果集中的第n个截取m个zrem key 某score下的value值:删除元素zcard:统计元素的个数zcount key score区间:统计区间的元素个数zrank key values值:获得下标值zscore key values值:获得分数zrevrank key values值:倒序获得下标值zrevrange key 0 -1:倒序输出zrevrangebyscore key endscore startscore:倒序排序输出 zdd zset01 60 v1 70 v2 80 v3 90 v4 100 v5zrange zset01 0 -1 [withscores]
转载地址:http://ztcsn.baihongyu.com/