选择数据库:
select 0-15 #一共16个数据库
keys * 查看当前库中所有key值
type 键 查看键的数据类型
flushdb 清空当前库
flushall 清空所有库
启动redis:
sudo redis-server /etc/redis/redis.conf
打开客户端:
redis-cli
连接远程客户端:
redis-cli -h host -p port
1)strings类型及操作:
设置key对应的值为string类型的value
set name HongWan
设置key对应的值为string类型的value。如果key已经存在,返回0,nx是not exist的意思
get name
"HongWan"
setnx name HongWan_new
0
get name
"HongWan"
setex:
设置key对应的值为string类型的value,并指定此键值对应的有效期。
添加一个haircolor= red的键值对,并指定它的有效期是10秒
setex haircolor 10 red
setrange:
设置指定key的value值的子字符串
将HongWan的126邮箱替换为gmail邮箱:
get name
"[email protected]"
setrange name 8 gmail.com
17
get name
"[email protected]"
其中的8是指从下标为8(包含8)的字符开始替换
mset
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置
mset key1 HongWan1 key2 HongWan2
OK
get key1
"HongWan1"
get key2
"HongWan2"
msetnx
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key(nx 表示not exist)
get key1
"HongWan1"
get key2
"HongWan2"
msetnx key2 HongWan2_new key3 HongWan3
(integer) 0
get key2
"HongWan2"
get key3
(nil)
可以看出如果这条命令返回0,那么里面操作都会回滚,都不会被执行。
get
获取key对应的string值,如果key不存在返回nil。
getset
设置key的值,并返回key的旧值。
get name
"HongWan"
getset name HongWan_new
"HongWan"
get name
"HongWan_new"
getrange
获取指定key的value值的子字符串
get name
"[email protected]"
getrange name 0 6 #注意:redis中的范围都是前闭后闭
"HongWan"
getrange name -7 -1
"126.com"
getrange name 7 100
"@126.com"
注意:当下标超出字符串长度时,将默认为是同方向的最大下标
mget
一次获取多个key的值,如果对应key不存在,则对应返回nil
mget key1 key2 key3
- "HongWan1"
- "HongWan2"
- (nil)
incr
对key的值做加加操作,并返回新的值。注意incr一个不是int的value会返回错误,incr一个不存在的key,则设置key为1
set age 20
OK
incr age
(integer) 21
get age
"21"
incrby
同incr类似,加指定值 ,key不存在时候会设置key,并认为原来的value是 0
get age
"21"
incrby age 5
(integer) 26
decr
对key的值做的是减减操作,decr一个不存在key,则设置key为-1
get age
"26"
decr age
(integer) 25
decrby
同decr,减指定值
get age
"25"
decrby age 5
(integer) 20
注意:decrby完全是为了可读性,我们完全可以通过incrby一个负值来实现同样效果,反之一样
append
给指定key的字符串值追加value,返回新字符串值的长度。例如我们向name的值追加一个@126.com字符串,那么可以这样做
append name @126.com
(integer) 15
get name
"[email protected]"
strlen
取指定key的value值的长度
get name
"HongWan_new"
strlen name
(integer) 11
get age
"15"
strlen age
(integer) 2
2)hash
理解模型: key--> {key1:value1,key2:value2}
hset
设置hash field为指定值,如果key不存在,则先创建
hset myhash field1 Hello
(integer) 1
hsetnx
设置hash field为指定值,如果key不存在,则先创建。如果field已经存在,返回0,nx是not exist的意思
hsetnx myhash field "Hello"
(integer) 1
hsetnx myhash field "Hello"
(integer) 0
hmset
同时设置hash的多个field
hmset myhash field1 Hello field2 World
OK
hget
获取指定的hash field
hget myhash field1
"Hello"
hmget
获取全部指定的hash filed
hmget myhash field1 field2 field3
- "Hello"
- "World"
- (nil)
注意:由于数据库没有field3,所以取到的是一个空值nil。
hincrby
指定的hash filed 加上给定值,若key不存在,则可视为默认值为0
hset myhash field3 20
(integer) 20
hget myhash field3
"20"
hincrby myhash field3 -8
(integer) 12
在本例中我们将field3的值从20降到了12,即做了一个减8的操作
hexists
测试指定field是否存在
hexists myhash field1
(integer) 1 #表示field字段存在 若为0就是不存在
hexists myhash field9
(integer) 0
hlen
返回指定hash的field数量
hlen myhash
(integer) 4 #表示有4个键值对
hdel
删除hash中某个键的值,并且返回指定hash的field数量
hlen myhash
(integer) 4
hdel myhash field1
(integer) 1
hlen myhash
(integer) 3
hkeys
返回hash的所有field
hkeys myhash
- "field2"
- "field"
- "field3"
hvals
返回hash的所有value
hvals myhash
- "World"
- "Hello"
- "12"
hgetall
获取某个hash中全部的filed及value
hgetall myhash
- "field2"
- "World"
- "field"
- "Hello"
- "field3"
- "12"
3)list
lpush
在key对应list的左部添加字符串元素 l相当于left,返回list的长度
lpush mylist "world"
(integer) 1
lpush mylist "hello"
(integer) 2
lrange mylist 0 -1
- "hello"
- "world"
rpush
在key对应list的右部添加字符串元素,返回list的长度
rpush mylist2 "hello"
(integer) 1
rpush mylist2 "world"
(integer) 2
lrange mylist2 0 -1
- "hello"
- "world"
linsert
在key对应list的特定位置之前或之后添加字符串元素
rpush mylist3 "hello"
(integer) 1
rpush mylist3 "world"
(integer) 2
linsert mylist3 before "world" "there"
(integer) 3
lrange mylist3 0 -1
- "hello"
- "there"
- "world"
lset
设置list中指定下标的元素值(下标从0开始)
rpush mylist4 "one"
(integer) 1
rpush mylist4 "two"
(integer) 2
lset mylist4 0 "four"
OK
lset mylist4 -2 "five"
OK
lrange mylist4 0 -1
- "four"
- "five"
- "three"
注意:指定下标插入的时候,以前的值就会被覆盖
lrem
从key对应list中删除count个和value相同的元素
count>0时,按从头到尾的顺序删除 count<0时,按从尾到头的顺序删除 count=0时,删除全部
rpush mylist5 "hello"
(integer) 1
rpush mylist5 "hello"
(integer) 2
rpush mylist5 "foo"
(integer) 3
rpush mylist5 "hello"
(integer) 4
lrem mylist5 2 "hello"
(integer) 2
lrange mylist5 0 -1
- "foo"
- "hello"
ltrim
保留指定key 的值范围内的数据
ltrim
保留指定key 的值范围内的数据:
rpush mylist8 "one"
(integer) 1
rpush mylist8 "two"
(integer) 2
rpush mylist8 "three"
(integer) 3
rpush mylist8 "four"
(integer) 4
ltrim mylist8 1 -1
OK
lrange mylist8 0 -1
- "two"
- "three"
- "four"
lpop
从list的头部删除元素,并返回删除元素
lrange mylist 0 -1
- "hello"
- "world"
lpop mylist
"hello"
lrange mylist 0 -1- "world"
rpop
从list的尾部删除元素,并返回删除元素
lrange mylist2 0 -1
- "hello"
- "world"
rpop mylist2
"world"
lrange mylist2 0 -1- "hello"
rpoplpush
从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil
lrange mylist5 0 -1
- "three"
- "foo"
- "hello"
lrange mylist6 0 -1- "hello"
- "foo"
rpoplpush mylist5 mylist6
"hello"
lrange mylist5 0 -1- "three"
- "foo"
lrange mylist6 0 -1- "hello"
- "hello"
- "foo"
lindex
返回名称为key的list中index位置的元素
lrange mylist5 0 -1
- "three"
- "foo"
lindex mylist5 0
"three"
lindex mylist5 1
"foo"
llen
返回key对应list的长度
llen mylist5
(integer) 2
4)sets
sadd
向名称为key的set中添加元素
sadd myset "hello"
(integer) 1
sadd myset "world"
(integer) 1
sadd myset "world"
(integer) 0 #添加过的元素无法再次添加
smembers myset
- "world"
- "hello"
srem
删除名称为key的set中的元素member
sadd myset2 "one"
(integer) 1
sadd myset2 "two"
(integer) 1
srem myset2 "one"
(integer) 1 # 删除成功返回1 失败返回0
smembers myset2
- "two"
spop
随机返回并删除名称为key的set中一个元素
sadd myset2 "one"
(integer) 1
sadd myset2 "two"
(integer) 1
srem myset2 "one"
(integer) 1
sdiff
返回所有给定key与第一个key的差集 也就是在第一个set中不在第二个set中的元素.
sadd myset chang
(integer) 1
sadd myset hao
(integer) 1
sadd myset2 hao
(integer) 1
sadd myset2 qu
(integer) 1
sdiff myset myset2
- "chang"
sdiff myset2 myset- "qu"
sdiffstore
返回所有给定key与第一个key的差集,并将结果存为另一个key
sdiffstore myset4 myset2 myset3
(integer) 1
与sdiff类似,把存在于myset2中的但不存在myset3中的元素存于myset4中
sinter
返回所有给定key的交集
smembers myset2
- "three"
- "two"
smembers myset3- "two"
- "one"
sinter myset2 myset3- "two"
返回myset2和myset3中的共同元素
sinterstore
返回所有给定key的交集,并将结果存为另一个key
sinterstore myset5 myset2 myset3
(integer) 1
把myset2和myset3中的共同元素存于myset5中
sunion
返回所有给定key的并集
smembers myset2
- "three"
- "two"
smembers myset3- "two"
- "one"
sunion myset2 myset3- "three"
- "one"
- "two"
返回myset2和myset3的并集
sunionstore
返回所有给定key的并集,并将结果存为另一个key
sunionstore myset6 myset2 myset3
(integer) 3
把myset2和myset3中的并集存于myset6中
smove
从第一个key对应的set中移除member并添加到第二个对应set中
smove myset2 myset7 three
(integer) 1
smembers myset7
- "three"
把three从myset2中删除并且存于myset7中
scard
返回名称为key的set的元素个数
scard myset2
(integer) 1
myset集合中的元素个数为一个
sismember
测试member是否是名称为key的set的元素
sismember myset2 two
(integer) 1
测试two是否是myset2中的元素 是 返回1 不是 返回0
srandmember
随机返回名称为key的set的一个元素,但是不删除元素
srandmember myset3
"two"
随机返回myset3中的元素 但是不删除
5)sorted sets
zadd
向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序
zadd myzset 1 "one"
(integer) 1
1表示one元素的score 用来排序
zrange myzset 0 -1 withscores
- "one"
- "1"
- "two"
- "3"
用来找出myzset集合中0 -1区间的所有元素 附带score
zrem
删除名称为key的zset中的元素member
zrem myzset two
(integer) 1
删除myzset中的two元素
zincrby
如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment
zadd myzset2 1 "one"
(integer) 1
zincrby myzset2 2 "one"
"3"
给one元素增加2 若元素不存在 默认score为0
zrank
返回名称为key的zset中member元素的排名(按score从小到大排序)即下标,从0开始
zrank myzset3 two
(integer) 1
表示two的分数从小到大排列获得第二位 即下表为1
zrevrank
返回名称为key的zset中member元素的排名(按score从大到小排序)即下标
和zrank类似只是从大到下排列
zrevrange
返回名称为key的zset(按score从大到小排序)中的index从start到end的所有元素
zrevrange myzset3 0 -1 withscores
- "five"
- "5"
- "three"
- "3"
- "two"
- "2"
- "one"
- "1"
按照score从大到小排列.
zrangebyscore
返回集合中score在给定区间的元素
zrangebyscore myzset3 2 3 withscores
- "two"
- "2"
- "three"
- "3"
返回score在2-3之间的所有元素的集合.
zcount
返回集合中score在给定区间的数量
zcount myzset3 2 3
(integer) 2
返回myzset3中score在2-3之间的元素个数.
zcard
返回集合中元素个数
zcard myzset3
(integer) 4
返回集合myzset3中元素的个数
zscore
返回给定元素对应的score
zscore myzset3 two
"2"
返回two元素的score值.
zremrangebyrank
删除集合中排名在给定区间的元素
zremrangebyrank myzset3 3 3
(integer) 1
删除集合按score从小到大排列下标在3-3区间的元素
zremrangebyscore
删除集合中score在给定区间的元素
zremrangebyscore myzset3 1 2
(integer) 2
删除集合中score在1-2区间的元素 [1,2]