您的位置:首页 > 数据库 > Redis

Redis笔记(二) - key关键字和Redis五个数据类型

2017-10-19 16:22 429 查看

说明

学习来源:谷粒学院 - Redis

Redis - key关键字

keys *:查看所有数据;

exists key:查看key是否存在;

move key db:将指定键的值移动到指定的库中;

示例:move k1 1
将键为k1的数据移动到1号库中;

expire key:指定key的过期时间,单位值秒;

ttl key:查看key还有多长时间过期,-1表示永不过期,-2表示已过期;

type key:查看key的数据类型;

Redis五大数据类型

String(字符串)

a)string是Redis中最基本的数据类型,一个key对应一个value;

b)string类型是二进制安全的,即redis的string可以包含任何类型的数据,例如图片,序列化的对象;

c)string类型的value最多可以存储512M;

操作命令

set key value:设置键值;

get key:根据键获取值;

del key:删除键值;

append key str:在key的值后面追加上str;

strlen key:查看字符串长度;

incr key:将key的值加1,注:值必须是数字;

decr key:将key的值减1,注:值必须是数字;

incrby key num:将key的值加num,注:值必须是数字;

decrby key num:将key的值减num,注:值必须是数字;

getrange key beginIndex endIndex:获取键值索引值为beginIndex到endIndex之间的字符串;

setrange key offset value:在key的offset位置处插入value;

setex key seconds value(set with expire):设置key的过期时间,value是key的值

setnx key value(set if not exist):设置键值,当该key不存在时才设置,如果存在,则不设置;

mset key1 value1 [key2 value2 key3 value3 ...]:一次设置多个key value;

mget key1 [key2 key3 ...]:一次获取多个key的value;

msetnx key1 value1 [key2 value2 key3 value3 ...]:一次设置多个key value,当添加的所有key都不存在时,设置成功,如果有一个key已经存在,则都不设置;

getset key value:先获取key的值,在设置key的值为value;

List(列表)

a)Redis的List是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

b)List的底层实际是个链表。

操作命令

lpush key value1 [value2 value3 ...]:从list头部(左边)添加一个元素;

示例:lpush list01 1 2 3 4 5
存储的结果是54321

rpush key value1 [value2 value3 ...]:从list尾部(右边)添加一个元素;

示例:rpush list02 1 2 3 4 5
存储的结果是12345

lrange key start stop:获取key值start到stop的元素;

获取全部元素:lrange key 0 -1

lpop key:从头部(左边)出栈,出栈后该数据在list中就不存在了;

rpop key:从尾部(右边)出栈,出栈后该数据在list中就不存在了;

lindex index:获取list中下标为index位置的元素;

llen key:获取list的长度;

lrem key count value:删除count个value;

示例:lpush list 1 1 1 2 2 2 3 3 3 4 5 6

lrem list 2 3 删除list中2个值为3的元素;

ltrim key start stop:截取掉list中下标从start到stop的元素,保存剩余的;

rpoplpush source destination:把source中的尾部元素放在destination的头部;

lset key index value:将list中下标为index位置上的元素设置为value;

lInsertkey key before/after pivot value:在list中第一个值为pivot元素的前面或者后面添加value元素;

list的性能

list是一个字符串链表,left、right都可以插入元素;

如果键不存在,创建新的链表;

如果键已经存在,新增内容;

如果值全部移除,对应的键也就不存在了;

链表的操作无论是头和尾的效率都非常高,但假如是对中间元素进行操作,操作效率就非常低了。

Set(集合)

Redis的Set是string类型的无序集合。它是通过HashTable实现的。

操作命令

sadd key member1 [member2 member3 ...]:添加set集合;当有重复的元素,不添加;

smembers key:获取key中所有的元素;

sismembe key member:查看在key中是否有member元素;

scardr key:获取key集合中的元素个数;

srem key member1 [member2 ...]:删除key集合中的指定元素;

srandmember key [count]:随机获取key集合中的元素,默认获取1个,可以指定获取的个数;

spop key:随机出栈;

smove key1 key2 member:将key1集合中的member元素移动操key2集合中;

并集、交集、差集

sdiff key1 key2:差集,在第1个set中而不在第2个set中的元素;

sinter key1 key2:交集;

sunion key1 key2:并集;

Hash(哈希,类似Java里的Map)

a)Redis hash是一个键值对集合,是一个String类型的field和value的映射表,hash特别适合用与存储对象;

b)类似Java里面的Map<String, Object>;

操作命令

hset key field value:往map集合中添加一个元素;

示例:hset user id 10001

hget key field:获取map集合中field元素的值;

示例:hget user id

hmset key field1 value1 [field2 value2 field3 value3 ... ]:往map集合中添加多个元素;

hmget key field1 [field2 field3 ...]:获取map和中多个field元素的值;

hgetall key:获取map集合中的所有元素值;

hdel key field1 [field2 field3 ...]:删除map集合中的多个元素;

hlen key:获取map集合元素的个数;

hexists key field:map集合中是否存在field元素;

hkeys keys:获取map集合中所有key的名字;

hvals keys:获取map集合中所有的value值;

hincrby key field increment:把map集合中field元素的值加increment,注:该元素的值必须是数字;

hincrbyfloat key field increment:同上,不过加的是小数;

hsetnx key field value:往map集合中添加元素,当该元素不存在时添加,存在时不添加;

Zset(sorted set:有序集合)

a)Redis的Zset和set一样也是string类型元素的集合,且不允许重复的成员。

b)不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序,Zset成员是唯一的,但分数(score)却可以重复。

c)形象的描述:Zset在set的基础上,加一个score值,之前set是k1
v1 v2 v3,现在zset是k1 score1 v1 score2 v2;

操作命令

zadd key score1 member1 [score2 member2 ...]:添加;

示例:zadd zset01 10 v1 20 v2

zrange key start stop [withscores]:获取;

示例:zrange zset01 0 -1 [withscores]

zrangebyscore key min max [withscores] [limit offset count]:获取集合中score值在min到max之间的元素,limit关键字可以将获取的元素再进行分页显示,offset是开始元素,count是显示个数;

示例:zrangebyscore zset 10 20
获取10<=score>=20的元素;

zrangebyscore zset (10 20 获取10<score>=20的元素;

注:( 是不包含的意思;

zrangebyscore zset 10 20 limit 0 2 获取10<score>=20的元素,从第1个元素开始显示,显示2个;

zrem key member [member ...]:删除集合中的一个或多个元素;

zcard key:获取集合中元素的个数;

zcount key min max:获取集合中score值在min到max之间的元素;

zrank key member:获取集合中member元素的下标值;

zscore key member:获取集合中member元素的score值;

zrevrank key member:逆序获取集合中member元素的下标值;

zrevrange key start stop [withscores]:逆序获取集合中的元素;

zrevrangebyscore key max min [withscores] [limit offset count]:同zrangebyscore,但是逆序获取元素;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: