常用操作:
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/strlen
incr/decr/incrby/decrby
getrange/setrange
setex(set with expire)/setnx(set if not exist)
mset/mget/msetnx(m:more)
getset(先get再set)
set 设置一个键值对 set name zhaoliu
setnx 当且仅当键不存在时设置一个键值对,并返回1,否则返回0 setnx name zhaoliu
setex key time value
setrange 替换指定key的value值的字符串 setrange name 4 @qq.com 从下标为4的位置开始 当替换的长度小于原长度时,原字符串的多出来的内容不变
mset 一次设置多个key-value,全部成功返回1,否则返回0,任何一个出现问题都保存不成功
mset key1 lisi ket2 wangwu key3 zhaoliu
msetnx 一次设置多个key-value,当且仅当键不存在时返回1,否则返回0,任何一个已经存在,就保存不了。
get get key
getset 设置key的值,并返回一个key的旧值 getset key 20 设置key为20,并获取key之前的值
getrange 返回key的子字符串getrange key 0 5 key的第0个字到第5个字符,一共6个字符
mget 批量获取mget key1 key2 key3
incr 自增1 incr key
incrby incrby key 6 如果之前没有值,默认是0
decr
decrby
append 给key的value追加value,返回value长度 append key .com
strlen 取key的value的长度 strlen key
hash类型
类似于java中的map,string类型的filed和value的映射表,特别适合存储对象
kv模式不变,但v是一个键值对kv
hset/hget/hmset/hgetall/hdel
hlen
hexists key 在key中的某个值的key
hkeys/hvals
hincrby/hincrbyfloat
hsetnx
hset 设置hash filed为指定值 hset user:001 name yz
hget 获取 hget user:001 name 得到yz
hsetnx 当且仅当键不存在时设置 hsetnx user:001 name yz
hmset 同时设置hash的多个field hmset user:001 name yz age 22 sex nan
hmget 批量返回hash的多个field hmget user:001 name age sex
hincrby 对hash的field加上值 hincrby user:001 age 5
hexists 测试指定field是否存在 hexists user:001 address 存在返回1,不存在返回0
hlen hash表里所有存在的field的数量 hlen user:001
hdel 删除指定hash的field hdel user:001 age
hkeys 返回hash的所有field,不是值 hkeys user:001
hvals 返回hash的所有field的值 hvals user:001
hgetall 获取某个hash中全部的field及value
list类型
list是一个链表结构,可以左右添加等操作。主要功能是push、pop、获取一个范围的所有值等等
操作中的key为链表的名称。是一个双向string链表
(l:left/r:right)
lpush/rpush/lrange
lpop/rpop/rpoplpush
lindex,按照索引下标获得元素(从上到下)
llen
lrem key n v :删N个value
ltrim key index1 index2 :保留index1到index2之间的value到key
lset key index value
linsert key before/after 值1 值2
lpush 在key对应的list的栈顶添加字符串元素 lpush mylist "world" lpush mylist "hello"
lpush list 1 2 3 4 5:先存1再存2……lrange取出的顺序是存入的反向
最后一个是头部
lrange lrange 0 -1 代表从头到尾部,取出元素 hello world
rpush 在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前面插入hello
lset 设置指定下标(默认从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-1
lpop 从list的栈顶删除一个元素 lpop mylist 返回删除的元素
rpop 从list的尾部删除一个元素 rpop mylist 返回删除的元素
rpoplpush 从第一个list尾部删除元素并添加到第二个list头部 rpoplpush firstlist secondlist
lindex 返回index位置的元素 lindex mylist index
llen 返回list的size llen mylist
set
无序无重复集合
sadd/smembers/sismember
scard key:获取集合里面有多少个元素
srem key value:删除集合中元素
srandmember key n:在key里面随机出n个value
spop key:随机出栈
smove key1 key2 value1:将key1中的value1赋给key2
差集sdiff:sdiff key1 key2,在key1中不在key2中
交集sinter:sinter key1 key2,key1和key2中都有
补集sunion:sunion key1 key2,所有不重复的value
sadd set01 1 1 2 2 3 3 返回(integer)3
smembers set01 返回"1" "2" "3"
smembers key:返回所有value
sismember 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 v5
zrange zset01 0 -1 [withscores]