redis数据类型以及常用相关命令
String类型及操作
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。
Set方法
设置key对应的值为string类型的value ,例如:我们添加一个name = xingdong的键值对 redis 127.0.0.1:6379>set name xingdong
获取name的话 get name 就可以了
Setnx方法
如果存在则返回0,否则插入
Setex 方法
设置key对应的值为string类型的value,并指定此键值对应的有效期
Setex haircolor 10 red
Get haircolor 10秒后过期返回(nil)
Setrange 方法
Set email xingdong@126.com
Setrange email 8 @qq.com //第8个字符开始替换,只替换现有字符串的长度
Get emali 得到 xingdong@qq.com
Mset方法
一次设置多个key的值,成功返回OK表示所有的值都设置了,失败并返回0表示没有任何值被设置
Mset name1 xingdong name2 action
Get name1 得到 xingdong
Get name2 得到 action
Msetnx方法
一次设置多个key 的值,成功返回ok表示所有的值都已经设置,失败返回0表示没有任何值设置,但是不会覆盖已经存在的key。
有一个设置不成功,则返回0 false
Getset方法
设置key的值,并返回key的旧值
Getrange方法
获取key 的value值的子字符串
Getrange name 0 5
Mget方法
一次获取多个key 的值,如果对应key不存在,则对应返回nil
Meget name1 name2
Incr (decr 对key 的值做减操作)
对key的值做加加操作,并返回新的值
Set age 24
Incr age 得到的是25
Incrby (decrby 减指定值)
同incr类似,加指定值,key 不存在的时候会设置key,并认为原来的value为0
Incrby age 5 得到的是 30(加5)
Append
给指定key的字符串追加value,返回新字符串值的长度
Append name .com
Strlen
取指定key的value值的长度
Strlen name
Hashs 类型
Hashs类型及操作
Redis hash 是一个string类型的field和value 的映射表。他的添加、删除操作都是0(1)平均。Hash特别适用于存储对象。相较于将对象的每个字段存成单个srting类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
Hset 方法
设置hash field 为指定值,如果key不存在,则先创建
Hset user:001 name xingdong
Hget user:001 name 得到xingdong
Hsetnx方法
设置hash field 为指定值,如果key不存在,则先创建,如果存在返回0
Hmset
同时设置 hash的多个field
Hmset user:001 name action age 24
Hmget 获得多个值
Hincrby 方法
Hexits 测试指定field 是否存在
Hexits user:001 name 存在返回1不存在返回0
Hlen 方法 指定hash的field的数量
Hdel 方法 删除指定hash的filed
Hkeys 方法 返回hash的所有field
Hvals 方法 返回hash的所有value
Hgetall方法 获取 某个hash中全部的field及value
List类型
List类型及操作
List是个链表结构,主要功能是push pop 获取一个范围的所有值等。操作中key理解为链表的名字。Redis 的list类型其实就是每一个子元素都是string类型的双向链表,我们可以通过push pop操作从链表中的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
栈 压入 1 2 3 输出 3 2 1
队列 压入 1 2 3 输出 1 2 3
Lpush 在key对应的list头部添加字符串元素
Lpush mylist ‘world’
Lpush mylist ‘hello ’
Lange mylist 0 -1 // 0到负1
输出 hello world
rpush 在key对应的list尾部添加字符串元素
Linsert在key对应list 的特定位置前或者后添加字符串
lpush mylist “world”
Insert mylist before “world” “hello” //在world前添加hello
Lrange mylist 0 -1
Lset设置list中指定下标的元素值
Rpush mylist “hello”
Lset mylist 0 “world”
Lrange mylist 0 -1
Lrem从key对应list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)
Rpush mylist “one” 四次
Lrem mylist 3 “one”
Ltrim保留指定key的值范围内的数据,其余的全部删除
Ltrim mylist 1 -1 保留 1 到后面所有的
Lpop 从list的头部删除元素,并返回删除元素
Lpop mylist
Rpop 与lpop相反
Rpoplpush从第一个list 的尾部移除元素并添加到第二个list的头部
Rpoplpush mylist1 mylist2
Lindex 返回名称为key的list中的index位置的元素
Lindex mylist 0
Llen 返回key对应的list类型对应的长度u
Set 类型
Setl类型和操作
Set 是集合,是string类型的无序集合。Set是通过hash table 实现的,添加 删除 和查找的复杂度都是 0(1)。对集合我们可以去并集 交集 差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
Sadd 向名称为key的set中添加元素
Sadd myset ‘hello’ 重复添加的返回 0
Smembers myset 列出元素
Srem 删除名称为key的set中的元素
Srem myset ‘hello’
Spop 随机返回并删除名称为key 的set中的一个元素
Spop myset
Sdiff 返回所有指定key与第一个key的差集
Sdiff myset1 myset2 // 以myset为标准
Sdiffstore返回所有指定key与第一个key 的差集,并将结果存为另一个key
Sdiffstore myset1 myset2 myset3 2与3的差集存到1里面
Sinter 返回所有给定key 的交集
Sinter myset1 myset2
Sinterstore返回所有指定key与第一个key 的交集,并将结果存为另一个key
Sinterstore myset1 myset2 myset3 2与3的交集存到1里面
Sunion 返回制定所有key 的并集
Sunion myset1 myset2
Sunionstore 返回所有给定key 的并集
Sunionstore myset1 myset2 myset3 同上
Smove 从第一个key对应的set中移除member并添加到第二个对应的set中
Smove myset1 myset2 one 将myset1中的one元素放到myset2 中去
Scard 返回名称为key的set的元素个数
Scard myset
Sismember 测试member是否是名称为key的set的元素
Sismember myset one
Srandmember //随机返回名称为key的set的一个元素,但不删除元素
Srandmember myset
Sorted set类型及操作
Sorted set 是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次制定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存value ,一列存顺序。操作中key理解为 zset的名字。
Zadd方法
向名称为key的zset中添加元素member,score用于排序,如果该元素存在,则更新其顺序
Zadd myset 1 “one”
Zadd myset 2 “two”
Zadd myset 3 “three”
Zrange myset 0 -1 withscores(不叫withscores 只列出 one two three)
Zrem 删除名称为key的zset中的元素member
Zrem myset one
Zincrby 方法
如果在名称为key 的zset中已经存在元素member,则该元素的score增加increment,则该元素的score增加increment,否则向该集合中添加该元素,其score的值为increment
Zrank
返回名称为key的zset中的member元素的排名(按score从小到大排序)即下标
zrevrank
返回名称为key的zset中的member元素的排名(按score从大到小排序)即下标
Zrevrange 相反排序
Zrevrange myset 0 -1
Zrangebyscore方法 返回集合中score在给定区间的元素
Zrangebyscore myset 2 3 withscores 返回 2 到3的元素
Zcount 返回集合中score在给定区间的数量
Zcount myset
Zcard 返回集合中score所有的数量
Zcard myset
Zremrangebyrank 删除集合中排名在给定区间的元素
Zremrangebyrank myset 1 1(按照索引)
Zremrangebyscore 删除集合中score在给定区间的元素
其他常用命令
Key 返回满足给定pattern的所有key / key sess
Exists 确认一个key 是否存在 / exists name
Del 删除一个键 del name
Expire 设置一个key过期的时间 expire name 10
Ttl name 查看还有多少时间过期
//数据库形式
默认的是select 0 编号0-15
Select 0 Set age 30 Get age 得到值Move age 1 Get age没有值
Select 1 Get age / 得到值
Persist 移除给定key 的过期时间 Persist name
Randomkey 随机返回key空间的一个key randomkey
Rename 重命名 key rename age newgae
Type 返回键的数据类型 type name
Ping 测试连接是否存活 ping
Echo 在命令行打印一些内容 echo name
Quit 退出连接 exit
Dbsize 返回当前数据库中key 的数目 dbsize
Info 返回服务器的信息和统计
Config get 实时传储收到的请求config get dir config get *
Flushdb 删除当前选择数据库中的所有key
Flushall 删除所有数据库的所有key
已有 0 条评论