redis数据类型的使用及介绍
Redis数据类型
1、Sting类型
-
set命令
设置键值,存在则覆盖,不存在则新建
-
set key value EX 秒
设置有效时长为秒
-
nx 如果键不存在则新建,如果存在返回nil
-
xx 只有键存在才能操作
127.0.0.1:6379> auth foobared # 注释Windows上操作redis时需要输入配置文件上的密码
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set wusir 666
OK
127.0.0.1:6379> get wusir
"666"
127.0.0.1:6379> set gg ll ex 5
OK
127.0.0.1:6379> get gg
"ll"
127.0.0.1:6379> get gg
(nil)
127.0.0.1:6379> keys *
1) "wusir"
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k1 v1 nx
(nil)
127.0.0.1:6379> set k2 v2 nx
OK
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> set k3 v3 xx
(nil)
127.0.0.1:6379> set k1 va
OK
127.0.0.1:6379> get k1
"va"
127.0.0.1:6379>
-
get命令
获取key 对应的value,只能获取一个,KEY存在,返回value,不存在返回nil
-
mset
批量设置key,和value的值,会覆盖已存在的值
-
mget
批量获取key值,如果不存在返回nil
-
getset
给key重新设定value,并返回原来的value,如果key不存在则返回nil
-
strlen
返回value的长度
-
append
key存在追加,不存在新建
-
incr
将Key中的数字加1,只能对数字产生作用
- 常用作计数,在使用getset重置为0
-
decr
将Key中的数字减1,只能对数字产生作用
-
incrby
增加指定值 多少,只能对数字产生作用
-
decrby
减少指定值 多少,只能对数字产生作用
-
indcrbyfloat(默认保留17位)
增加指定的浮点数,不存在减少,但是可以加上负的浮点数
-
getrange
切片同Python切片类似,没有步长
-
127.0.0.1:6379> mset k5 v5 k6 v6 OK 127.0.0.1:6379> get k5 "v5" 127.0.0.1:6379> get k6 "v6" 127.0.0.1:6379> get k3 (nil) 127.0.0.1:6379> keys * 1) "k6" 2) "k2" 3) "wusir" 4) "k1" 5) "k5" 127.0.0.1:6379> set k3 v3 OK 127.0.0.1:6379> mget k1 k2 k3 1) "va" 2) "v2" 3) "v3" 127.0.0.1:6379> mset k1 v1 k7 v7 OK 127.0.0.1:6379> get k1 "v1" 127.0.0.1:6379> getset k1 va "v1" 127.0.0.1:6379> get k1 "va" 127.0.0.1:6379> strlen wusir (integer) 3 127.0.0.1:6379> append k1 vava (integer) 6 127.0.0.1:6379> get k1 "vavava" 127.0.0.1:6379> set k8 8 OK 127.0.0.1:6379> incr k8 (integer) 9 127.0.0.1:6379> get k8 "9" 127.0.0.1:6379> decr k8 (integer) 8 127.0.0.1:6379> get k8 "8" 127.0.0.1:6379> incrby k8 10 (integer) 18 127.0.0.1:6379> decrby k8 9 (integer) 9 127.0.0.1:6379> get k8 "9" 127.0.0.1:6379> set name wusir OK 127.0.0.1:6379> keys * 1) "name" 2) "k2" 3) "wusir" 4) "k5" 5) "k6" 6) "k8" 7) "k1" 8) "k3" 9) "k7" 127.0.0.1:6379> getrange 1,3 (error) ERR wrong number of arguments for 'getrange' command 127.0.0.1:6379> getrange name 1,3 (error) ERR wrong number of arguments for 'getrange' command 127.0.0.1:6379> GETRANGE name 1 3 "usi" 127.0.0.1:6379> get name "wusir" 127.0.0.1:6379> getrange -1 -3 (error) ERR wrong number of arguments for 'getrange' command 127.0.0.1:6379> getrange name -1 -3 "" 127.0.0.1:6379> getrange name 1 3 "usi" 127.0.0.1:6379> getrange name -3 -1 "sir" 127.0.0.1:6379>
2.List类型
lpush:从左边推入
lpop:从右边弹出
rpush:从右变推入
rpop:从右边弹出
-
lpush插入
- 语法:lpush 名称 值1 值2
-
lrange 查看所有
- lrange 名称 0 -1
-
lpop
- 移除并返回列表的第一个元素
-
rpop
- 移删除尾部的值
-
rpush(插入在最后的位置)
- 语法:rpush 名称 值1 值2,
-
rpushx
- 将value值插入到Key的尾部,Key必须存在才可以
-
lpushx
- 将value值插入到Key的头部,Key必须存在才可以
-
127.0.0.1:6379> auth foobared OK 127.0.0.1:6379> lpush list 11 22 (integer) 2 127.0.0.1:6379> lrange list 0 -1 1) "22" 2) "11" 127.0.0.1:6379> rpush aaa bbb ccc (integer) 2 127.0.0.1:6379> lrange list 0 -1 1) "22" 2) "11" 127.0.0.1:6379> lrange aaa 0 -1 1) "bbb" 2) "ccc" 127.0.0.1:6379> rpush list aaa bbb cc (integer) 5 127.0.0.1:6379> lrange list 0 -1 1) "22" 2) "11" 3) "aaa" 4) "bbb" 5) "cc" 127.0.0.1:6379> keys * 1) "aaa" 2) "list" 127.0.0.1:6379> del aaa (integer) 1 127.0.0.1:6379> keys * 1) "list" 127.0.0.1:6379> lpop list "22" 127.0.0.1:6379> lrange list 0 -1 1) "11" 2) "aaa" 3) "bbb" 4) "cc" 127.0.0.1:6379> rpop list "cc" 127.0.0.1:6379> lrange list 0 -1 1) "11" 2) "aaa" 3) "bbb" 127.0.0.1:6379>
-
lindex
- 从表头开始获取下标为index的value,索引从0开始
-
linsert
- 将value插入到key指定元素的key前或者后
BEFORE AFTER
,如果value不存在,则不操作
- 将value插入到key指定元素的key前或者后
-
llen
- 获取列表的长度
-
lrem
- count >0 从表头向表位,查找指定的个数
- count=0全部删除
- count <0 从表尾的方向表头,查找指定的个数
-
lset
- 置换指定索引位置的value,如果超出索引范围则报错
-
ltrim
- 列表切片
-
127.0.0.1:6379> keys * 1) "list" 127.0.0.1:6379> lrange list 0 -1 1) "11" 2) "aaa" 3) "bbb" 127.0.0.1:6379> linde list 1 (error) ERR unknown command 'linde' 127.0.0.1:6379> lindex list 1 "aaa" 127.0.0.1:6379> linsert list before aaa hello (integer) 4 127.0.0.1:6379> lrange list 0 -1 1) "11" 2) "hello" 3) "aaa" 4) "bbb" 127.0.0.1:6379> linsert list after aaa hhh (integer) 5 127.0.0.1:6379> lrange list 0 -1 1) "11" 2) "hello" 3) "aaa" 4) "hhh" 5) "bbb" 127.0.0.1:6379> llen list (integer) 5 127.0.0.1:6379> lpush list aaa (integer) 6 127.0.0.1:6379> lrange list 0 -1 1) "aaa" 2) "11" 3) "hello" 4) "aaa" 5) "hhh" 6) "bbb" 127.0.0.1:6379> lrem list 1 aaa (integer) 1 127.0.0.1:6379> lrange list 0 -1 1) "11" 2) "hello" 3) "aaa" 4) "hhh" 5) "bbb" 127.0.0.1:6379> lpush list bbb (integer) 6 127.0.0.1:6379> lrange list 0 -1 1) "bbb" 2) "11" 3) "hello" 4) "aaa" 5) "hhh" 6) "bbb" 127.0.0.1:6379> lrem list -1 bbb (integer) 1 127.0.0.1:6379> lrange list 0 -1 1) "bbb" 2) "11" 3) "hello" 4) "aaa" 5) "hhh" 127.0.0.1:6379> lpush list hhh (integer) 6 127.0.0.1:6379> lrange list 0 -1 1) "hhh" 2) "bbb" 3) "11" 4) "hello" 5) "aaa" 6) "hhh" 127.0.0.1:6379> lrem list 0 hhh (integer) 2 127.0.0.1:6379> lrange list 0 -1 1) "bbb" 2) "11" 3) "hello" 4) "aaa" 127.0.0.1:6379> lset list 1 zbh OK 127.0.0.1:6379> lrange list 0 -1 1) "bbb" 2) "zbh" 3) "hello" 4) "aaa" 127.0.0.1:6379> ltrim list 1 3 OK 127.0.0.1:6379> lrange list 0 -1 1) "zbh" 2) "hello" 3) "aaa" 127.0.0.1:6379>
3、hash型
-
存储类型
-
{"db":{"redis":"redis.conf","mysql":"mysql.conf","ningx":"ningx.conf"}}
-
127.0.0.1:6379> hset db redis redis.conf (integer) 1 127.0.0.1:6379> hset db mysql mysql.conf (integer) 1 127.0.0.1:6379> hset db ningx ningx.conf (integer) 1 127.0.0.1:6379> hget db mysql "mysql.conf" 127.0.0.1:6379> hgetall db 1) "redis" 2) "redis.conf" 3) "mysql" 4) "mysql.conf" 5) "ningx" 6) "ningx.conf" 127.0.0.1:6379>
-
-
HSET
- 给hash增加key value值
-
HLEN
- 获取hash的长度
-
hget
- 获取 hash里面的key和value值
- 语法:hget hashname key
-
hgetall
- 获取所有的键值对
-
hmset
- 批量增加键值对
-
hmget
- 批量获取键值对
-
hsetnx
- 给指定的hash增加键值对,如果原来的Filed存在,则操作无效,如果不存在则创建
-
hkeys
- 获取hash所有的field
-
hvals
- 获取hash中所有的value
-
hdel
- 删除hash表中一个或者多个filed
-
hexists
- 判断hash表中是否存在,如果存在为1,不存在为0
-
hincrby
- 给hash表中的数字,增加指定的数值,只限数值
-
hincrbyfloat
- 给hash表中的数字,增加指定的浮点数值,只限数值
-
127.0.0.1:6379> hgetall db 1) "redis" 2) "redis.conf" 3) "mysql" 4) "mysql.conf" 5) "ningx" 6) "ningx.conf" 127.0.0.1:6379> HLEN db (integer) 3 127.0.0.1:6379> hmset ac 1 2 2 3 3 4 4 5 5 6 OK 127.0.0.1:6379> hmget ac 1 2 3 4 5 1) "2" 2) "3" 3) "4" 4) "5" 5) "6" 127.0.0.1:6379> hkeys ac 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> hvals db 1) "redis.conf" 2) "mysql.conf" 3) "ningx.conf" 127.0.0.1:6379> hdel ac 5 (integer) 1 127.0.0.1:6379> hkeys ac 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379> hexists db mysql (integer) 1 127.0.0.1:6379> hexists db sqlserver (integer) 0
4、SET型
-
sadd
- 给集合添加值,如果存在则保留,什么都不操作,如果值不存在则添加
-
smembers
- 获取所有的成员
-
SCARD
- 获取集合个数
-
sdiff
- 获取两个集合差集,前面存在的但是后面不存在的元素
-
sinter
- 获取两集合的交集
-
sunion
- 获取两集合并集
-
sismember
- 判断元素是否在集合内,存在为1,不存在返回0
-
smove
- 将指定的元素从一个集合移动到另一个集合中,如果源集合存在则移动,如果不存在则忽略;如果目标集合存在直接移动,如果目标集合不存在则新建并移动;
-
spop
- 随机删除指定个数的元素,并把删除的元素打印出来
-
srandmeber
-
随机获取指定个数元素
-
如果count>0
- count>集合总数,全部取出
- count小于集合总数,则随机取出count个
-
如果count<0,则随机count次取出值
-
-
SREM
- 删除集合中的指定一个或者多个元素
-
127.0.0.1:6379> sadd col k1 k1 k1 k2 k3 k2 (integer) 3 127.0.0.1:6379> smembers col 1) "k2" 2) "k3" 3) "k1" 127.0.0.1:6379> scard col (integer) 3 127.0.0.1:6379> sadd coo k1 k5 (integer) 2 127.0.0.1:6379> sdiff col coo 1) "k2" 2) "k3" 127.0.0.1:6379> sinter col coo 1) "k1" 127.0.0.1:6379> sunion col coo 1) "k2" 2) "k5" 3) "k3" 4) "k1" 127.0.0.1:6379> sismember col k4 (integer) 0 127.0.0.1:6379> sismember col k3 (integer) 1 127.0.0.1:6379> spop col 2 (error) ERR wrong number of arguments for 'spop' command 127.0.0.1:6379> SPOP col "k2" 127.0.0.1:6379> srem col k3 (integer) 1
5、ZSET
有序集合
-
zadd
- 添加
-
zrange
- 遍历
-
127.0.0.1:6379> zadd a 1 123 (integer) 1 127.0.0.1:6379> zadd a 2 123 (integer) 0 127.0.0.1:6379> zadd a 3 1234 (integer) 1 127.0.0.1:6379> zrange a 0 -1 1) "123" 2) "1234" 127.0.0.1:6379>
刚刚学习,如有错误欢迎指正;