关于reids的常用命令
1.redis是一个运行在内存的数据库,他有一个缺点:假如有一个正在编辑的wor文档,突然停电那么这个正在编辑的word文档是会丢失的;所以它诞生了save,bgsave这两个命令,save是保存在磁盘中是同步的(等他保
127.0.0.1:6379> save OK 127.0.0.1:6379> bgsave Background saving started
存完之后才可以输入其他的命令),bgsave是保存在磁盘中在后台保存的异步的
2.redis的运行,进入安装redis的bin目录,先运行服务端,再运行客户端,ping命令是用来测试连接
[ ~]# cd /opt/redis [ redis]# ./bin/redis-server redis.conf [ redis]# ./bin/redis-cli 127.0.0.1:6379> ping PONG
3.redis有五种类型string(相当于JDK中的String+Integer),list(相当于JDK中的linklist),set(相当于JDK中的hashset,无序,不重复),hash(类似JDK中的hashMap,一个大key对应好多的小key于value),zset(相当于JDK中的treeset,排序,有分值的概念)
4.redis默认使用0数据库,切换到指定数据库:select index,默认有16个库,下标从0-15
1 127.0.0.1:6379> select 3 2 OK 3 127.0.0.1:6379[3]>
quit:请求服务器关闭与当前客户端的连接,客户端关闭,服务端没关 1 127.0.0.1:6379[3]> quit 2 [ redis]#
client setname 名字:设置客户端连接的名称;client getname:获取客户端名称
127.0.0.1:6379> client setname 1710d OK 127.0.0.1:6379> client getname "1710d"
client list:返回所有连接到服务器的客户端信息和统计数据
1 127.0.0.1:6379> client list 2 id=4 addr=127.0.0.1:42926 fd=6 name=1710d age=133 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
config set 命令可以动态地调整 Redis 服务器的配置(confifiguration)而无须重启 1 127.0.0.1:6379> config set loglevel notice 2 OK 3 (修改配置)
config get 命令用于取得运行中的 Redis 服务器的配置参数
127.0.0.1:6379> config get bind 1) "bind" 2) "" (获得绑定ip的参数)
shutdown:关闭客户端与服务端 1 127.0.0.1:6379> shutdown 2 not connected>
dbsize:返回数据库中所有key的数量;flushdb:清空当前数据库中的所有 key;flushall:清空整个 Redis 服务器的数据(删除所有数据库的所有 key );type key:查看key的类型;keys *: 匹配数据库中所有 key;
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo匹配
hello和
hallo,但不匹配
hillo
127.0.0.1:6379> dbsize (integer) 3 127.0.0.1:6379> keys * 1) "Name" 2) "age" 3) "name" 127.0.0.1:6379> type age string
dump序列化给定 key ,并返回被序列化的值
127.0.0.1:6379> get name "test" 127.0.0.1:6379> dump name "\x00\x04test\x06\x00\x17}\xc7 \x99\xa4\x8c\xd6"
exists key:检查给定的key是否存在;del key[key……]:删除给定的一个或多个key
127.0.0.1:6379> exists name (integer) 1 127.0.0.1:6379> del age (integer) 1 127.0.0.1:6379> del name Name (integer) 2
move key 1:将当前数据库的 key 移动到给定的数据库 db 当中
127.0.0.1:6379> set name 1 OK 127.0.0.1:6379> move name 2 (integer) 1 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> keys * 1) "name"
randomkey:从当前数据库中随机返回(不删除)一个 key 1 127.0.0.1:6379[2]> randomkey 2 "name"
ttl:以秒为单位,返回给定 key 的剩余生存时间,返回值:当 key 不存在时,返回 -2,当 key 存在但没有设置剩余生存时间时,返回 -1,否则,以秒为单位,返回 key 的剩余生存时间
pttl:这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间
127.0.0.1:6379[2]> ttl name (integer) -1 127.0.0.1:6379[2]> ttl k (integer) -2 127.0.0.1:6379[2]> pttl name (integer) -1
expire key 30:为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除;pexpire key 10000: 这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间
127.0.0.1:6379[2]> expire name 30 (integer) 1 127.0.0.1:6379[2]> ttl name (integer) 20 127.0.0.1:6379[2]> pttl name (integer) 14152 127.0.0.1:6379[2]> pexpire name 10000 (integer) 1 127.0.0.1:6379[2]> ttl name (integer) 7 127.0.0.1:6379[2]> pttl name (integer) 2738
persist key:移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』
127.0.0.1:6379[2]> set k1 20 OK 127.0.0.1:6379[2]> ttl k1 (integer) -1 127.0.0.1:6379[2]> expire k1 20 (integer) 1 127.0.0.1:6379[2]> ttl k1 (integer) 17 127.0.0.1:6379[2]> persist k1 (integer) 1 127.0.0.1:6379[2]> ttl k1 (integer) -1
rename key namekey:将 key 改名为 namekey
127.0.0.1:6379[2]> rename k1 namekey OK 127.0.0.1:6379[2]> keys * 1) "namekey"
5.string类型
set key value[EX 秒][PX 毫秒]:将字符串值 value 关联到 key 。如果 key 已经持有其他值, SET 就覆写旧值,无视类型;EX与PX都是设置生存时间;
get key:返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值 nil
append key value:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value;
decr key:将 key 中储存的数字值减一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作;(递减,只针对于数字)
decrby key 2:将 key 所储存的值减去减量 2 ,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作;(给定要减去的数值,只针对于数字)
incr key:将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作;(递增,只针对于数字)
incrby key 2:将 key 所储存的值加上增量 2 ,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令;(给定要增加的数值,只针对于数字)
mset key value[key value……]:同时设置一个或多个 key-value 对;
mget key[key……]:返回所有(一个或多个)给定 key 的值;
strlen key:返回 key 所储存的字符串值的长度;
setrange key 1 yyyy:用 yyyy参数覆写(overwrite)给定 key
所储存的字符串值,从偏移量 1
开始
127.0.0.1:6379> set name 20 OK 127.0.0.1:6379> get name "20" 127.0.0.1:6379> append name 2 (integer) 3 127.0.0.1:6379> get name "202" 127.0.0.1:6379> get a (nil) 127.0.0.1:6379> append a 2 (integer) 1 127.0.0.1:6379> get a "2" 127.0.0.1:6379> decr a (integer) 1 127.0.0.1:6379> get a "1" 127.0.0.1:6379> get name "202" 127.0.0.1:6379> decrby name 2 (integer) 200 127.0.0.1:6379> incr name (integer) 201 127.0.0.1:6379> get name "201" 127.0.0.1:6379> incrby name 2 (integer) 203 127.0.0.1:6379> mset 1 name 2 age OK 127.0.0.1:6379> mget 1 2 1) "name" 2) "age" 127.0.0.1:6379> strlen name (integer) 3 127.0.0.1:6379> setrange name 1 yyyy (integer) 5 127.0.0.1:6379> get name "2yyyy"
6.list类型
lpush key value[value……]:将一个或多个值 value 插入到列表 key 的表头,如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空队列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a;rpush从右向左推;
lrange key:返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定,下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示,列表的第二个元素,以此类推,你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
127.0.0.1:6379> lpush 1710d a b c (integer) 3 127.0.0.1:6379> lrange 1710d 0 -1 1) "c" 2) "b" 3) "a"
lindex key index:返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示
列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
127.0.0.1:6379> lrange 1710d 0 -1 1) "c" 2) "b" 3) "a" 127.0.0.1:6379> lindex 1710d -1 "a" 127.0.0.1:6379> lindex 1710d -2 "b" 127.0.0.1:6379> lindex 1710d 0 "c" 127.0.0.1:6379> lindex 1710d 2 "a"
llen key:返回列表 key 的长度。如果 key 不存在,则 key 被解释为一个空列表,返回 0 .如果 key 不是列表类型,返回一个错误。
127.0.0.1:6379> llen 1710d (integer) 3 127.0.0.1:6379> get key (nil) 127.0.0.1:6379> llen key (integer) 0 127.0.0.1:6379> type name string 127.0.0.1:6379> llen name (error) WRONGTYPE Operation against a key holding the wrong kind of value
lrem key count value:根据参数 count 的值,移除列表中与参数 value 相等的元素.count 的值可以是以下几种:count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count ;count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值;count = 0 : 移除表中所有与 value 相等的值;从表头删除 count >0;从表尾 删除 count <0;全部删除 count =0
127.0.0.1:6379> lpush 1710d c c f b c a b c d f d b c a (integer) 14 127.0.0.1:6379> lrange 1710d 0 -1 1) "a" 2) "c" 3) "b" 4) "d" 5) "f" 6) "d" 7) "c" 8) "b" 9) "a" 10) "c" 11) "b" 12) "f" 13) "c" 14) "c" 127.0.0.1:6379> lrem 1710d 0 a (integer) 2 127.0.0.1:6379> lrange 1710d 0 -1 1) "c" 2) "b" 3) "d" 4) "f" 5) "d" 6) "c" 7) "b" 8) "c" 9) "b" 10) "f" 11) "c" 12) "c" 127.0.0.1:6379> lrem 1710d 2 d (integer) 2 127.0.0.1:6379> lrange 1710d 0 -1 1) "c" 2) "b" 3) "f" 4) "c" 5) "b" 6) "c" 7) "b" 8) "f" 9) "c" 10) "c" 127.0.0.1:6379> lrem 1710d -2 b (integer) 2 127.0.0.1:6379> lrange 1710d 0 -1 1) "c" 2) "b" 3) "f" 4) "c" 5) "c" 6) "f" 7) "c" 8) "c"
lpop key:移除并返回列表 key 的头元素
127.0.0.1:6379> lrange 1710d 0 -1 1) "c" 2) "b" 3) "f" 4) "c" 5) "c" 6) "f" 7) "c" 8) "c" 127.0.0.1:6379> lpop 1710d "c" 127.0.0.1:6379> lrange 1710d 0 -1 1) "b" 2) "f" 3) "c" 4) "c" 5) "f" 6) "c" 7) "c"
7.set类型
sadd key member[member……]:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合
127.0.0.1:6379> sadd myset chjx chjx test (integer) 2 127.0.0.1:6379> sadd myset chjx a (integer) 1
smembers key:返回集合 key 中的所有成员
127.0.0.1:6379> smembers myset 1) "test" 2) "a" 3) "chjx"
sdiff key key2:返回一个集合的全部成员,该集合是所有给定集合之间的差集。不存在的 key 被视为空集。(差集,前面集合中有,后面集合中没有的元素);
sinter key key2:返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律).(交集,两个集合共同拥有的元素);
sunion key key2:返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。(两个集合中的所有元素,并且去掉重复的);
127.0.0.1:6379> sadd myset1 chjx lisi test zhangsan (integer) 4 127.0.0.1:6379> sadd myset2 chjx qianqi wangwu zhaoliu (integer) 4 127.0.0.1:6379> sdiff myset1 myset2 1) "lisi" 2) "test" 3) "zhangsan" 127.0.0.1:6379> sinter myset1 myset2 1) "chjx" 127.0.0.1:6379> sunion myset1 myset2 1) "qianqi" 2) "zhangsan" 3) "wangwu" 4) "test" 5) "lisi" 6) "chjx" 7) "zhaoliu"
8.hash类型
hset key field value:将哈希表 key 中的域 field 的值设为 value 。如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。如果域 field 已经存在于哈希表中,旧值将被覆盖(hmset:是设置多个键值对)
hget key field:取值(hmget:获取多个)
127.0.0.1:6379> hset myhash name lisi (integer) 1 127.0.0.1:6379> hget myhash name "lisi"
hkeys key:返回哈希表 key 中的所有域
127.0.0.1:6379> hset myhash name lisi (integer) 1 127.0.0.1:6379> hset myhash age 18 (integer) 1 127.0.0.1:6379> hkeys myhash 1) "name" 2) "age"
hvals key:返回哈希表 key 中所有域的值
1 127.0.0.1:6379> hvals myhash 2 1) "lisi" 3 2) "18"
hgetall key:返回哈希表 key 中,所有的域和值
127.0.0.1:6379> hgetall myhash 1) "name" 2) "lisi" 3) "age" 4) "18"
hincrby key field increment :为哈希表 key 中的域 field 的值加上增量 increment
127.0.0.1:6379> hgetall myhash 1) "name" 2) "lisi" 3) "age" 4) "18" 127.0.0.1:6379> hincrby myhash age 2 (integer) 20 127.0.0.1:6379> hgetall myhash 1) "name" 2) "lisi" 3) "age" 4) "20"
hlen key:返回哈希表 key 中域的数量 1 127.0.0.1:6379> hlen myhash 2 (integer) 2
hexists key field :查看哈希表 key 中,给定域 field 是否存在;
hdel key field[field……]:查看哈希表 key 中,给定域 field 是否存在;
127.0.0.1:6379> hexists myhash age (integer) 1 127.0.0.1:6379> hdel myhash age (integer) 1 127.0.0.1:6379> hexists myhash age (integer) 0
9.zset类型(zset中有一个分数score的概念,可以通过这个score来对分数对应的元素排序)
zadd key score member[score member……]:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个member 元素,来保证该 member 在正确的位置上。score 值可以是整数值或双精度浮点数。如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误;
zrange key start stop withscores:返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序(withscores连分一起查看);
127.0.0.1:6379> zadd myzset 70 lisi 80 zhangsan 90 wangwu (integer) 3 127.0.0.1:6379> zrange myzset 0 -1 1) "lisi" 2) "zhangsan" 3) "wangwu" 127.0.0.1:6379> zrange myzset 0 -1 withscores 1) "lisi" 2) "70" 3) "zhangsan" 4) "80" 5) "wangwu" 6) "90"
zcard key:返回有序集 key 的基数(有几条数据) 1 127.0.0.1:6379> zcard myzset 2 (integer) 3
zcount key min max:返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的。(在区间内的元素个数) 1 127.0.0.1:6379> zcount myzset 70 80 2 (integer) 2
zincrby key increment member :为有序集 key 的成员 member 的 score 值加上增量 increment 1 127.0.0.1:6379> zincrby myzset 2 lisi 2 "72"
zrangebyscore key min max [withscores]:返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列(在区间内的元素)
127.0.0.1:6379> zrangebyscore myzset 70 80 1) "lisi" 2) "zhangsan" 127.0.0.1:6379> zrangebyscore myzset 70 80 withscores 1) "lisi" 2) "72" 3) "zhangsan" 4) "80
zrank key member:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,也就是说, score 值最小的成员排名为 0 1 127.0.0.1:6379> zrank myzset lisi 2 (integer) 0
zrem key member[member……]:移除有序集 key 中的一个或多个成员,不存在的成员将被忽略(可以移除多个)
127.0.0.1:6379> zrem myzset lisi (integer) 1 127.0.0.1:6379> zrem myzset wangwu zhangsan (integer) 2
zremrangebyrank key start stop:移除有序集 key 中,指定排名(rank)区间内的所有成员
127.0.0.1:6379> zadd myzset 70 lisi 80 zhangsan 90 wangwu (integer) 3 127.0.0.1:6379> zremrangebyrank myzset 0 1 (integer) 2 127.0.0.1:6379> zrange myzset 0 -1 1) "wangwu"
zremrangebyscore key min max:移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员
127.0.0.1:6379> zadd myzset 70 lisi 80 zhangsan 90 wangwu (integer) 2 127.0.0.1:6379> zremrangebyscore myzset 70 80 (integer) 2
zrevrange key start stop [withscores]:返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列(从大到小排名输出;rev:reverse反转的缩写)
127.0.0.1:6379> zrevrange myzset 0 -1 1) "wangwu" 2) "zhangsan" 3) "lisi" 127.0.0.1:6379> zrevrange myzset 0 -1 withscores 1) "wangwu" 2) "90" 3) "zhangsan" 4) "80" 5) "lisi" 6) "70"
zrevrangebyscore key max min [withscores]:返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列
127.0.0.1:6379> zrevrangebyscore myzset 90 70 1) "wangwu" 2) "zhangsan" 3) "lisi" 127.0.0.1:6379> zrevrangebyscore myzset 90 70 withscores 1) "wangwu" 2) "90" 3) "zhangsan" 4) "80" 5) "lisi" 6) "70"
zrevrank key member:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序.(从大到小排序的排名)
127.0.0.1:6379> zrevrangebyscore myzset 90 70 withscores 1) "wangwu" 2) "90" 3) "zhangsan" 4) "80" 5) "lisi" 6) "70" 127.0.0.1:6379> zrevrank myzset lisi (integer) 2
zscore key member:返回有序集 key 中,成员 member 的 score 值 1 127.0.0.1:6379> zscore myzset lisi 2 "70"