redis的简单使用

选择数据库:
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

  1. "HongWan1"
  2. "HongWan2"
  3. (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

  1. "Hello"
  2. "World"
  3. (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

  1. "field2"
  2. "field"
  3. "field3"

hvals
返回hash的所有value

hvals myhash

  1. "World"
  2. "Hello"
  3. "12"

hgetall
获取某个hash中全部的filed及value

hgetall myhash

  1. "field2"
  2. "World"
  3. "field"
  4. "Hello"
  5. "field3"
  6. "12"

3)list

lpush
在key对应list的左部添加字符串元素 l相当于left,返回list的长度

lpush mylist "world"
(integer) 1
lpush mylist "hello"
(integer) 2
lrange mylist 0 -1

  1. "hello"
  2. "world"

rpush
在key对应list的右部添加字符串元素,返回list的长度

rpush mylist2 "hello"
(integer) 1

rpush mylist2 "world"
(integer) 2

lrange mylist2 0 -1

  1. "hello"
  2. "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

  1. "hello"
  2. "there"
  3. "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

  1. "four"
  2. "five"
  3. "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

  1. "foo"
  2. "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

  1. "two"
  2. "three"
  3. "four"

lpop
从list的头部删除元素,并返回删除元素

lrange mylist 0 -1

  1. "hello"
  2. "world"
    lpop mylist
    "hello"
    lrange mylist 0 -1
  3. "world"

rpop
从list的尾部删除元素,并返回删除元素

lrange mylist2 0 -1

  1. "hello"
  2. "world"
    rpop mylist2
    "world"
    lrange mylist2 0 -1
  3. "hello"

rpoplpush
从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil

lrange mylist5 0 -1

  1. "three"
  2. "foo"
  3. "hello"
    lrange mylist6 0 -1
  4. "hello"
  5. "foo"
    rpoplpush mylist5 mylist6
    "hello"
    lrange mylist5 0 -1
  6. "three"
  7. "foo"
    lrange mylist6 0 -1
  8. "hello"
  9. "hello"
  10. "foo"

lindex
返回名称为key的list中index位置的元素

lrange mylist5 0 -1

  1. "three"
  2. "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

  1. "world"
  2. "hello"

srem
删除名称为key的set中的元素member

sadd myset2 "one"
(integer) 1
sadd myset2 "two"
(integer) 1
srem myset2 "one"
(integer) 1 # 删除成功返回1 失败返回0
smembers myset2

  1. "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

  1. "chang"
    sdiff myset2 myset
  2. "qu"

sdiffstore
返回所有给定key与第一个key的差集,并将结果存为另一个key

sdiffstore myset4 myset2 myset3
(integer) 1
与sdiff类似,把存在于myset2中的但不存在myset3中的元素存于myset4中

sinter
返回所有给定key的交集

smembers myset2

  1. "three"
  2. "two"
    smembers myset3
  3. "two"
  4. "one"
    sinter myset2 myset3
  5. "two"
    返回myset2和myset3中的共同元素

sinterstore
返回所有给定key的交集,并将结果存为另一个key

sinterstore myset5 myset2 myset3
(integer) 1
把myset2和myset3中的共同元素存于myset5中

sunion
返回所有给定key的并集

smembers myset2

  1. "three"
  2. "two"
    smembers myset3
  3. "two"
  4. "one"
    sunion myset2 myset3
  5. "three"
  6. "one"
  7. "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

  1. "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

  1. "one"
  2. "1"
  3. "two"
  4. "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

  1. "five"
  2. "5"
  3. "three"
  4. "3"
  5. "two"
  6. "2"
  7. "one"
  8. "1"
    按照score从大到小排列.

zrangebyscore
返回集合中score在给定区间的元素

zrangebyscore myzset3 2 3 withscores

  1. "two"
  2. "2"
  3. "three"
  4. "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]

你可能感兴趣的:(redis的简单使用)