安装Redis

官方网站:http://redis.io/

官方下载:http://redis.io/download 可以根据需要下载不同版本

windows版:https://github.com/mythz/redis-windows

https://github.com/ServiceStack/redis-windows/raw/master/downloads/redis-latest.zip

phpstudy安装redis扩展

# 教程
http://blog.csdn.net/tianjingang1/article/details/68491369 # php_redis.dll资源
http://windows.php.net/downloads/pecl/releases/redis/2.2.7/ # php_igbinary.dll 资源
http://pecl.php.net/package/igbinary

window版本:

下载完成之后,在目录中找到 redis-server.exe redis-cli.exe

必须先打开前者,再打开后者,如下图所示:

相关的Redis配置可在 redis.windows.conf 中配置


String类:

# 插入数据
redis 127.0.0.1:6379> set name wwl # 查询数据
redis 127.0.0.1:6379> get name
"wwl" # 删除键值
redis 127.0.0.1:6379> del name # 验证键是否存在:其中 0,代表此 key 不存在;1 代表存在
redis 127.0.0.1:6379> exists name # => (integer) 0

setnx: 如果 key 已经存在, 那么不进行set操作并且返回0, nx 是 not exist 的意思

set name Lee
setnx name Lee123
get name # => Lee

setex:设定有效期

setex name 10 red # => 10秒之后name为red,过了十秒自动过期删除

setrange: 替换值

set name 928532756@qq.com
setrange name 10 2980.com
get name # => "928532756@2980.com"

mset:一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。

mset key1 HongWan1 key2 HongWan2 # => OK
get key1 # => "HongWan1"
get key2 # => "HongWan2"

msetnx:一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置,但是不会覆盖已经存在的 key。如果这条命令返回 0,那么里面操作都会回滚,都不会被执行。

msetnx key2 HongWan2_new key3 HongWan3 # => (integer) 0
get key2 # => "HongWan2"
get key3 # => (nil)
# 可以看出如果这条命令返回 0,那么里面操作都会回滚,都不会被执行。

getset: 设置 key 的值,并返回 key 的旧值。如果 key 不存在,那么将返回 nil

127.0.0.1:6379> set name Lee
OK
127.0.0.1:6379> getset name Mp
"Lee"

getrange: 字符串截取

redis 127.0.0.1:6379> get name
# => "HongWan@126.com"
redis 127.0.0.1:6379> getrange name 0 6
# => "HongWan"
redis 127.0.0.1:6379> getrange name -7 -1
# => "126.com"
redis 127.0.0.1:6379> getrange name 7 100
# => "@126.com"

mget: 一次获取多个key,如果不存在则返回nil

127.0.0.1:6379> mget a b c d
# 1) "1"
# 2) "2"
# 3) "3"
# 4) (nil)

incr: 对 key 的值做加加(i++)操作,并返回新的值。注意 incr 一个不是 int 的 value 会返回错误,incr 一个不存在的 key,则设置 key 为 1

decr : 同上,对key的值做减减操作。

redis 127.0.0.1:6379> set age 20
# =>OK
redis 127.0.0.1:6379> incr age
# =>(integer) 21
redis 127.0.0.1:6379> get age
# =>"21"

incrby: 同 incr 类似,加指定值 ,key 不存在时候会设置 key,并认为原来的 value 是 0

decrby: 同上,减去指定的值

redis 127.0.0.1:6379> get age
# => "21"
redis 127.0.0.1:6379> incrby age 5
# => (integer) 26
redis 127.0.0.1:6379> get age
# => "26"

append:给指定 key 的字符串值追加 value,返回新字符串值的长度。

127.0.0.1:6379> set name 928532756
# => OK
127.0.0.1:6379> append name @qq.com
# => (integer) 16
127.0.0.1:6379> get name
# => "928532756@qq.com"

strlen: 获取指定值的长度

127.0.0.1:6379> strlen name
# => (integer) 16

Hash 类型及操作:

hset / hget:设置 / 获取指定hash field 的值,如果 key 不存在,则先创建。

127.0.0.1:6379> hset myhash field1 hello
# => (integer) 1
127.0.0.1:6379> hset myhash field2 world
# => (integer) 1
127.0.0.1:6379> hget myhash field1
# => "hello"
127.0.0.1:6379> hget myhash field1
# => "hello"
127.0.0.1:6379> hget myhash field2
# => "world"

hsetnx:设置 hash field 为指定值,如果 key 不存在,则先创建。如果 field 已经存在,返回 0,nx 是not exist 的意思。

redis 127.0.0.1:6379> hsetnx myhash field "Hello"
# => (integer) 1
redis 127.0.0.1:6379> hsetnx myhash field "Hello"
# => (integer) 0 第一次执行是成功的,但第二次执行相同的命令失败,原因是 field 已经存在了。

hmset / hmget: 同时设置/获取 hash 的多个 field。

127.0.0.1:6379> del myhash
# => (integer) 1
127.0.0.1:6379> hmset myhash field1 Hello field2 World
# => OK
127.0.0.1:6379> hmget myhash fiele1 field2 field3
# => 1) "Hello"
# => 2) "World"
# => 3) (nil) 由于数据库没有 field3,所以取到的是一个空值 nil

hexists: 测试指定的field是否存在

127.0.0.1:6379> hexists myhash field1
# => (integer) 1

hincrby:指定的 hash filed 加上给定值。可以为负数

127.0.0.1:6379> hset myhash field3 20
# (integer) 1
127.0.0.1:6379> hincrby myhash field3 -8
# (integer) 12

hlen:返回指定 hash 的 field 数量。

127.0.0.1:6379> hlen myhash
# (integer) 3

hdel: 删除指定hash的列, 如果要删除hash表本身,直接使用del

127.0.0.1:6379> hdel myhash field3
# (integer) 1

hkeys: 返回hash所有的列

127.0.0.1:6379> hkeys myhash
# 1) "field1"
# 2) "field2"

hvals: 返回hash所有的值

127.0.0.1:6379> hvals myhash
# 1) "Hello"
# 2) "World"

hgetall: 返货hash所有的键值

127.0.0.1:6379> hgetall myhash
# 1) "field1"
# 2) "Hello"
# 3) "field2"
# 4) "World"

lists  类型及操作 :

lpush : 在 key 对应 list 的头部添加字符串元素

lrange:  是用于取 mylist 的内容。

127.0.0.1:6379> lpush mylist "world"
# (integer) 1
127.0.0.1:6379> lpush mylist "hello"
# (integer) 2
127.0.0.1:6379> lrange mylist 0 -1
# 1) "hello"
# 2) "world"

rpush: 在 key 对应 list 的尾部添加字符串元素

127.0.0.1:6379> rpush mylist3 "hello"
# (integer) 1
127.0.0.1:6379> rpush mylist3 "world"
# (integer) 2
127.0.0.1:6379> lrange mylist3 0 -1
# 1) "hello"
# 2) "world"

linsert: 在 key 对应 list 的特定位置之前或之后添加字符串元素

127.0.0.1:6379> linsert mylist3 before "world" "there"
# (integer) 3
127.0.0.1:6379> lrange mylist3 0 -1
# 1) "hello"
# 2) "there"
# 3) "world"

lset: 替换 list 中指定索引的值

127.0.0.1:6379> rpush mylist4 "one"
# (integer) 1
127.0.0.1:6379> rpush mylist4 "two"
# (integer) 2
127.0.0.1:6379> rpush mylist4 "there"
# (integer) 3
127.0.0.1:6379> lset mylist4 0 "four"
# OK
127.0.0.1:6379> lset mylist4 2 "five"
# OK
127.0.0.1:6379> lrange mylist4 0 -1
# 1) "four"
# 2) "two"
# 3) "five"

lrem: 从 key 对应 list 中删除 count 个和 value 相同的元素。count>0 时,按从头到尾的顺序删除,具体如下:

127.0.0.1:6379> rpush mylist5 "hello"
# (integer) 1
127.0.0.1:6379> rpush mylist5 "hello"
# (integer) 2
127.0.0.1:6379> rpush mylist5 "foo"
# (integer) 3
127.0.0.1:6379> rpush mylist5 "hello"
# (integer) 4
127.0.0.1:6379> lrem mylist5 2 "hello"
# (integer) 2
127.0.0.1:6379> lrange mylist5 0 -1
# 1) "foo"
# 2) "hello"

count<0 时,按从尾到头的顺序删除,具体如下:

127.0.0.1:6379> rpush mylist6 "hello"
# (integer) 1
127.0.0.1:6379> rpush mylist6 "hello"
# (integer) 2
127.0.0.1:6379> rpush mylist6 "foo"
# (integer) 3
127.0.0.1:6379> rpush mylist6 "hello"
# (integer) 4
127.0.0.1:6379> lrem mylist6 -2 "hello"
# (integer) 2
127.0.0.1:6379> lrange mylist6 0 -1
# 1) "hello"
# 2) "foo"

count=0 时,删除全部,具体如下:

redis 127.0.0.1:6379> rpush mylist7 "hello"
# (integer) 1
redis 127.0.0.1:6379> rpush mylist7 "hello"
# (integer) 2
redis 127.0.0.1:6379> rpush mylist7 "foo"
# (integer) 3
redis 127.0.0.1:6379> rpush mylist7 "hello"
# (integer) 4
redis 127.0.0.1:6379> lrem mylist7 0 "hello"
# (integer) 3
redis 127.0.0.1:6379> lrange mylist7 0 -1
# 1) "foo"

ltrim: 保留指定索引范围内的值

127.0.0.1:6379>  rpush mylist8 "one"
# (integer) 1
127.0.0.1:6379> rpush mylist8 "two"
# (integer) 2
127.0.0.1:6379> rpush mylist8 "three"
# (integer) 3
127.0.0.1:6379> rpush mylist8 "four"
# (integer) 4
127.0.0.1:6379> ltrim mylist8 1 -1
# OK
127.0.0.1:6379> lrange mylist8 0 -1
# 1) "two"
# 2) "three"
# 3) "four"

lpop: 弹出头部元素并且移出List

rpop: 弹出尾部元素并且移出List

127.0.0.1:6379> lrange mylist 0 -1
# 1) "hello"
# 2) "world"
127.0.0.1:6379> lpop mylist
# "hello"
127.0.0.1:6379> lrange mylist 0 -1
# 1) "world"

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

127.0.0.1:6379> lrange mylist5 0 -1
# 1) "foo"
# 2) "hello"
127.0.0.1:6379> lrange mylist6 0 -1
# 1) "hello"
# 2) "foo"
127.0.0.1:6379> rpoplpush mylist5 mylist6
# "hello"
127.0.0.1:6379> lrange mylist5 0 -1
# 1) "foo"
127.0.0.1:6379> lrange mylist6 0 -1
# 1) "hello"
# 2) "hello"
# 3) "foo"

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

127.0.0.1:6379> lrange mylist2 0 -1
# 1) "hello"
# 2) "wird"
127.0.0.1:6379> lindex mylist2 0
# "hello"

llen: 获取list的长度

127.0.0.1:6379> llen mylist2
# (integer) 2

sets  类型及操作:

sadd: 向名称为 key 的 set 中添加元素

smembers: 查看 myset 中的所有元素

127.0.0.1:6379> sadd myset "hello"
# (integer) 1
127.0.0.1:6379> sadd myset "world"
# (integer) 1
127.0.0.1:6379> sadd myset "world"
# (integer) 0 由于第三个元素跟第二个元素是相同的,所以第三个元素没有添加成功
127.0.0.1:6379> smembers myset
# 1) "world"
# 2) "hello"

srem: 删除指定的值

127.0.0.1:6379> sadd myset2 "one"
# (integer) 1
127.0.0.1:6379> sadd myset2 "two"
# (integer) 1
127.0.0.1:6379> sadd myset2 "three"
# (integer) 1
127.0.0.1:6379> srem myset2 "one"
# (integer) 1
127.0.0.1:6379> srem myset2 "four"
# (integer) 0 由于元素 中没有 four 所以,此条 srem 命令执行失败。
127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"

spop: 【随机、随机、随机】弹出一个元素并从set中删除

127.0.0.1:6379> sadd myset3 "one"
# (integer) 1
127.0.0.1:6379> sadd myset3 "two"
# (integer) 1
127.0.0.1:6379> sadd myset3 "three"
# (integer) 1
127.0.0.1:6379> spop myset3
# "two"

sdiff: 返回所有给定 key 与第一个 key 的差集

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smembers myset3
# 1) "three"
# 2) "one"
127.0.0.1:6379> sdiff myset2 myset3
# 1) "two"

sdiffstore: 对比两组set的差集,并且存入另一个set中

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smembers myset3
# 1) "three"
# 2) "one"
127.0.0.1:6379> sdiff myset2 myset3
# 1) "two"
127.0.0.1:6379> sdiffstore myset4 myset2 myset3
# (integer) 1
127.0.0.1:6379> smembers myset4
# 1) "two"

sinter: (核心功能)返回所有给定 key 的交集

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smembers myset3
# 1) "three"
# 2) "one"
127.0.0.1:6379> sinter myset2 myset3
# 1) "three"

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

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smembers myset3
# 1) "three"
# 2) "one"
127.0.0.1:6379> sinterstore myset4 myset2 myset3
# (integer) 1
127.0.0.1:6379> smembers myset4
# 1) "three"

sunion: 返回所有给定 key 的并集

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smembers myset3
# 1) "three"
# 2) "one"
127.0.0.1:6379> sunion myset2 myset3
# 1) "one"
# 2) "two"
# 3) "three"

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

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smembers myset3
# 1) "three"
# 2) "one"
127.0.0.1:6379> sunionstore myset4 myset2 myset3
# (integer) 3
127.0.0.1:6379> smembers myset4
# 1) "one"
# 2) "two"
# 3) "three"

smove:从第一个 key 对应的 set 中 移除 指定值 并添加到第二个对应 set 中

127.0.0.1:6379> smembers myset2
# 1) "three"
# 2) "two"
127.0.0.1:6379> smove myset2 myset7 three
# (integer) 1
127.0.0.1:6379> smembers myset7
# 1) "three"
127.0.0.1:6379> smembers myset2
# 1) "two"

scard: 返回指定set的长度

127.0.0.1:6379> scard myset2
# (integer) 1

sismember: 检测是否包含指定值

127.0.0.1:6379> smembers myset2
# 1) "two"
127.0.0.1:6379> sismember myset2 two
# (integer) 1
127.0.0.1:6379> sismember myset2 one
# (integer) 0

srandmember: 机返回名称为 key 的 set 的一个元素,但是不删除元素

127.0.0.1:6379> smembers myset2
# 1) "two"
127.0.0.1:6379> sismember myset2 two
# (integer) 1
127.0.0.1:6379> sismember myset2 one
# (integer) 0

sorted sets  类型及操作

zadd: 向名称为 key 的 zset 中添加元素 member,score 用于排序。如果该元素已经存在,则根据score 更新该元素的顺序

127.0.0.1:6379> zadd myzset 1 "one"
# (integer) 1
127.0.0.1:6379> zadd myzset 2 "two"
# (integer) 1
127.0.0.1:6379> zadd myzset 3 "two"
# (integer) 0
127.0.0.1:6379> zrange myzset 0 -1 withscores
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "3" two 被设置了 2 次,那么将以最后一次的设置为准

zrem: 删除名称为 key 的 zset 中的元素 member

127.0.0.1:6379> zrange myzset 0 -1 withscores
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "3"
127.0.0.1:6379> zrem myzset two
# (integer) 1
127.0.0.1:6379> zrange myzset 0 -1 withscores
# 1) "one"
# 2) "1"
# 可以看到 two 被删除了

zincrby: 本例中将 one 的 score 从 1 增加了 2,增加到了 3

127.0.0.1:6379> zadd myzset2 1 "one"
# (integer) 1
127.0.0.1:6379> zadd myzset2 2 "two"
# (integer) 1
127.0.0.1:6379> zincrby myzset2 2 "one"
# "3"
127.0.0.1:6379> zrange myzset2 0 -1 withscores
# 1) "two"
# 2) "2"
# 3) "one"
# 4) "3"

zrank: 返回store(key)

127.0.0.1:6379> zrange myzset2 0 -1 withscores
# 1) "two"
# 2) "2"
# 3) "one"
# 4) "3"
127.0.0.1:6379> zrank myzset2 two
# (integer) 0
127.0.0.1:6379> zrank myzset2 one
# (integer) 1

zrevrank: 返回所在的排名

127.0.0.1:6379> zrange myzset3 0 -1 withscores
1) "one"
2) ""
3) "two"
4) ""
5) "three"
6) ""
7) "four"
8) ""
127.0.0.1:6379> zrevrank myzset3 two
(integer) 2

zrevrange: (按 score 从大到小排序)中的 index 从 start 到 end 的所有元素

127.0.0.1:6379> zrevrange myzset3 0 -1 withscores
# 1) "four"
# 2) "4"
# 3) "three"
# 4) "3"
# 5) "two"
# 6) "2"
# 7) "one"
# 8) "1"

zrangebyscore: 返回指定区间的score

127.0.0.1:6379> zrangebyscore myzset3 2 3 withscores
# 1) "two"
# 2) "2"
# 3) "three"
# 4) "3"

zcount: 返回指定区间的数量

127.0.0.1:6379> zcount myzset3 2 3
# (integer) 2

zcard: 返回集合中元素个数

redis 127.0.0.1:6379> zcard myzset3
# (integer) 4

zscore:返回给定元素对应的 score(key)

127.0.0.1:6379> zrange myzset3 0 -1 withscores
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "2"
# 5) "three"
# 6) "3"
# 7) "four"
# 8) "4"
127.0.0.1:6379> zscore myzset3 two
# "2"

zremrangebyrank: 删除集合中 score 在给定区间的元素

127.0.0.1:6379> zrange myzset3 0 -1 withscores
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "2"
# 5) "three"
# 6) "3"
# 7) "four"
# 8) "4"
127.0.0.1:6379> zremrangebyrank myzset3 3 3
(integer) 1
127.0.0.1:6379> zrange myzset3 0 -1 withscores
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "2"
# 5) "three"
# 6) "3" 下标为3,既four被删除了

zremrangebyscore: 删除集合中 score 在给定区间的元素

127.0.0.1:6379> zrange myzset3 0 -1 withscores
# 1) "one"
# 2) "1"
# 3) "two"
# 4) "2"
# 5) "three"
# 6) "3"
127.0.0.1:6379> zremrangebyscore myzset3 1 2
# (integer) 2
127.0.0.1:6379> zrange myzset3 0 -1 withscores
# 1) "three"
# 2) "3"

Redis  常用命令

keys: 返回满足给定 pattern 的所有 key

127.0.0.1:6379> keys *
# 1) "myset4"
# 2) "myset7"
# 3) "a"
# 4) "myzset"
# 5) "c"
# 6) "mylist4"
# 7) "myset2"
# 8) "myset"
# 9) "mylist2"
# 10) "myzset2"
# 11) "mylist5"
# 12) "mylist3"
# 13) "myset3"
# 14) "myhash"
# 15) "mylist"
# 16) "mylist8"
# 17) "myzset3"
# 18) "b"
# 19) "mylist6"

用表达式 mylist*,代表取出所有以 mylist 开头的 key

127.0.0.1:6379> keys mylist*
# 1) "mylist4"
# 2) "mylist2"
# 3) "mylist5"
# 4) "mylist3"
# 5) "mylist"
# 6) "mylist8"
# 7) "mylist6"

exists:确认一个 key 是否存在

redis 127.0.0.1:6379> exists HongWan
# (integer) 0 不存在 HongWan 这个 key
redis 127.0.0.1:6379> exists age
# (integer) 1 age 这个 key 是存在的

del:删除一个 key

redis 127.0.0.1:6379> del age
# (integer) 1
redis 127.0.0.1:6379> exists age
# (integer) 0

expire:设置一个 key 的过期时间(单位:秒)

ttl: 获取一个 key 值的有效时期,直至为 -1 说明此值已过期 或者 没有过期时间(比如中途使用 persist 移除了过期时间,这样就永远不会过期了)

127.0.0.1:6379> expire a 10
# (integer) 1
127.0.0.1:6379> ttl a
# (integer) 7
127.0.0.1:6379> ttl a
# (integer) 6
127.0.0.1:6379> ttl a
# (integer) -2
127.0.0.1:6379> exists a
# (integer) 0

move:将当前数据库中的 key 转移到其它数据库中

在本例中,我先显式的选择了数据库 0(重点:默认的数据库就是0),然后在这个库中设置一个 key,接下来我们将这个
key 从数据库 0 移到数据库 1, 之后我们确认在数据库 0 中无此 key 了, 但在数据库 1 中存在
这个 key,说明我们转移成功了

127.0.0.1:6379> select 0
# OK
127.0.0.1:6379> exists 30
# (integer) 0
127.0.0.1:6379> set age 30
# OK
127.0.0.1:6379> get age
# "30"
127.0.0.1:6379> move age 1
# (integer) 1
127.0.0.1:6379> get age
# (nil)
127.0.0.1:6379> select 1
# OK
127.0.0.1:6379[1]> get age
# "30"

persist: 删除过期时间(让它永不过期)

127.0.0.1:6379> expire b 300
# (integer) 1
127.0.0.1:6379> ttl b
# (integer) 296
127.0.0.1:6379> ttl b
# (integer) 294
127.0.0.1:6379> ttl b
# (integer) 293
127.0.0.1:6379> get b
# "2"
127.0.0.1:6379> persist b
# (integer) 1
127.0.0.1:6379> get b
# "2"
127.0.0.1:6379> ttl b
# (integer) -1

randomkey: 随机返回一个 key

127.0.0.1:6379> randomkey
# "myzset"

rename: 重命名 key 要注意覆盖影响

127.0.0.1:6379> get a
# "1"
127.0.0.1:6379> get b
# "2"
127.0.0.1:6379> rename b a
# OK
127.0.0.1:6379> get a
# "2"

type: 返回值的类型

127.0.0.1:6379> type a
# string
127.0.0.1:6379> type myzset
# zset
127.0.0.1:6379> type mylist
# list

服务器相关命令

ping: 测试连接是否存活

redis 127.0.0.1:6379> ping
# PONG //执行下面命令之前,我们停止 redis 服务器
redis 127.0.0.1:6379> ping
# Could not connect to Redis at 127.0.0.1:6379: Connection refused //执行下面命令之前,我们启动 redis 服务器
not connected> ping
PONG

echo:在命令行打印一些内容

redis 127.0.0.1:6379> echo HongWan
# "HongWan"

select: 选择数据库。Redis 数据库编号从 0~15,我们可以选择任意一个数据库来进行数据的存取。

redis 127.0.0.1:6379> select 1
# OK
redis 127.0.0.1:6379[1]> select 16
# (error) ERR invalid DB index

quit:退出连接。

redis 127.0.0.1:6379> quit
[root@localhost redis-2.2.12]#

dbsize:返回当前数据库中 key 的数目。

redis 127.0.0.1:6379> dbsize
# (integer) 18

info: 获取服务器的信息和统计。

redis 127.0.0.1:6379> info
redis_version:2.2.12
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:32
multiplexing_api:epoll
...

monitor: 实时转储收到的请求。

启动之后,开启另一个命令行,可以看到监听到了keys *

config get: 获取服务器配置信息。

127.0.0.1:6379> config get dir
# 1) "dir"
# 2) "C:\\Users\\lizhaohong\\Desktop\\redis-windows-master\\src\\msopentech\\redis-64.2.8.2101"

flushdb:删除当前选择数据库中的所有 key。

在本例中我们将 0 号数据库中的 key 都清除了。

127.0.0.1:6379> dbsize
# (integer) 18
127.0.0.1:6379> flushdb
# OK
127.0.0.1:6379> dbsize
# (integer) 0

flushall:删除所有数据库中的所有 key。

redis 127.0.0.1:6379[1]> dbsize
#(integer) 1
redis 127.0.0.1:6379[1]> select 0
#OK
redis 127.0.0.1:6379> flushall
#OK
redis 127.0.0.1:6379> select 1
#OK
redis 127.0.0.1:6379[1]> dbsize
# (integer) 0

Redis 的学习和使用的更多相关文章

  1. memcache/redis 缓存学习笔记

    0.redis和memcache的区别 a.redis可以存储除了string之外的对象,如list,hash等 b.服务器宕机以后,redis会把内存的数据持久化到磁盘上,而memcache则不会 ...

  2. redis入门学习记录(二)

    继第一节 redis入门学习记录(一)之后,我们来学习redis的基本使用. 接下来我们看看/usr/local/redis/bin目录下的几个文件作用是什么? redis-benchmark:red ...

  3. 笔记-redis深入学习-1

    笔记-redis深入学习-1 redis的基本使用已经会了,但存储和读取只是数据库系统最基础的功能: 数据库系统还得为可靠实现这两者提供一系列保证: 数据.操作备份和恢复,主要是持久化: 高可用:主要 ...

  4. 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习

    反射实现Model修改前后的内容对比   在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...

  5. redis 高级学习和应用场景

    redis 高级学习 1.redis 复制 2.redis 集群 3.哨兵机制 4.spring 与哨兵结合 5.数据恢复与转移 6.redis 的阻塞分析 redis 实战 1. 数据缓存(热点数据 ...

  6. redis命令学习(二) · THIS SPACE

    列表(Lists)操作命令 Redis列表是简单的字符串列表,按照插入顺序排序. 你可以添加一个元素导列表的头部(左边)或者尾部(右边)LPUSH命令插入一个新的元素导头部,而RPUSH插入一个新元素 ...

  7. redis概要学习

    redis 概要学习 redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...

  8. Redis安全学习

    Redis安全学习 一直在听SSRF打Redis,那Redis到底是啥,正式的认真学习一下. 1.Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvat ...

  9. Redis in Action : Redis 实战学习笔记

    1 1 1 Redis in Action : Redis  实战学习笔记 1 http://redis.io/ https://github.com/antirez/redis https://ww ...

  10. Redis:学习笔记-04

    Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...

随机推荐

  1. hdu 1558(计算几何+并查集)

    Segment set Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. nodejs微服务

    近来公司增加了nodejs微服务 它的主要任务是接收来自于现场的采集数据:作业记录和流转记录,动态构建一个基地的全景实时数据        暂时不涉及数据库. 如果要进行数据库操作,不建议使用本模块, ...

  3. 「kuangbin带你飞」专题十七 AC自动机

    layout: post title: 「kuangbin带你飞」专题十七 AC自动机 author: "luowentaoaa" catalog: true tags: - ku ...

  4. AppScan 浏览器兼容解决

    手动探索的时候,因为打开的浏览器是appscan自带的,可能会存在兼容性问题,有些页面无法正常打开.那么是否可以用我们电脑上的浏览器(IE .火狐.谷歌)来进行录制 菜单栏--工具---选项----首 ...

  5. 数学【P2524】 Uim的情人节礼物·其之弐 (康托展开)

    因为某人@ZAGER挖坑让我讲一下康托展开,所以发现了这个题,顺便说一下康托展开是个什么东西 题目概括 给定n与一个数列,要求求出给定数列在n的全排列中的排名(按照字典序从小到大排列) 康托展开 先放 ...

  6. bzoj 5346: tree (其实是是某次雅礼集训的题)

    用prufer序列的公式直接dp,O(n^4)的算法简简单单就写出来了23333. 按理说 O(n^4)是需要优化成O(n^3)才能过的,然鹅我也不知道我怎么过了23333 (那就懒得优化了hhhhh ...

  7. 【bzoj1977】【严格次小生成树】倍增维护链上最大次大值

    (上不了p站我要死了,侵权度娘背锅) Description 小 C 最近学了很多最小生成树的算法,Prim 算法.Kurskal 算法.消圈算法等等. 正当小 C 洋洋得意之时,小 P 又来泼小 C ...

  8. JavaEE目录

    第一章: Spring介绍 Spring项目搭建 Spring概念 第二章: Sprin配置详解 属性注入(构造方法注入,设值注入) 实例化(构造器(空参构造器),静态工厂,工厂方法) 装配(xml方 ...

  9. 集合框架(上):学生选课(collection)

    利用集合存储课程信息: 1.Course类 package com.collection; public class Course { public String id; public String ...

  10. UBI文件系统简介

    转:http://www.embedu.org/Column/Column102.htm 在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs.jffs2.yaff ...