Redis学习
1,安装
make
cd src
make install
redis-server /etc/redis.conf
开启redis客户端
redis-cli
2,string字符串数据类型,键值对
set 设置的时候会覆盖
setnx 设置的时候不会覆盖
set name gaoran设置键值对name=>gaoran,存在则覆盖
setnx name gaoran,存在在返回0
setex设置有效期
setex haircolor 10 red,设置键值对haircolor=>color有效期为10秒
mset批量设置多个值
mset key1 gaoran1 key2 gaoran2
msetnx用法同setnx
getset设置key的值并返回key的旧值
getrange获取键值的子字符串
getrange name 0 5,返回0-4的字符,不包括下标5的字符
mget批量获取
mget key1 key2
incr对键值自增,返回自增后的值,key不存在时会设置key,并认为原来的值为0
incr key1
incrby加指定值,key不存在时会设置key,并认为原来的值为0,正为+,负为减
incrby key1 39
decr自减
decr key1
decrby减指定值
decrby key1 100
append为字符串追加字符串
append key1 .net ,为key后面追加.net
strlen查看字符串长度
strlen key1
3,hash数据类型,是一个string类型的field和value的映射表,插入和删除的复杂度都是O(1)
hset设置hash field为指定值
hset user:001 name gaoran,user表内id为001的表,user:001代表一个表,还可以hset myhash name gaoran
hsetnx类似于setnx,如果不存在则设置,如果存在就不设置,返回0
hmset,批量设置
hmset user:003 name gr age 20 set male
hincrby增加指定值
hincrby user:003 age 5,给age增加5
hexists判断hash表里某个字段是否存在
hexists user:003 name,返回1表示存在,0不存在
hlen代表hash表里字段的数量
hlen user:003
hdel删除hash表里的某个字段,返回1代表删除成功
hdel user:003 sex
hkeys返回hash表里的所有字段
hkeys user:003
hvals返回hash表里的所有value
hvals user:003
hgetall获取hash表里的所有key和value
hgetall user:003
4,list类型,是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,list就是每个子元素都是string类型的双向链表,我们可以使用push、pop操作从链表的头部或尾部添加、删除元素,这样list既可以作为栈,又可以作为队列,栈(先入后出filo)一头进一头出,队列(先入先出fifo)一头进另一头出
lpush从头压入元素,返回list里的元素个数
lpush mylist hello
lpop从头部取出元素,返回取出的元素
lpop mylist
lrange mylist 0 -1从头部的第一个元素取到最后一个元素
rpush从尾部压入元素,返回list里的元素个数
rpush mylist gaoran
rpop 从尾部取出元素,返回取出的元素
rpop mylist
linsert在key对应的位置前或后插入元素,头的方向为前
linsert mylist before hello gaoran1
linsert mylist after hello gaoran2
lset设置list指定下标元素的值
lset mylist 0 "new world",将下标为0的元素的值设置为new world,返回ok代表成功
lrem从list删除n个和value相同的元素,返回值代表删除掉的个数
lrem mylist 1 hello,在mylist中删除1个hello
ltrim保留指定下标的值范围内的数据
ltrim mylist 1 2,保留下标1和2(包含)之内的所有元素,其他元素全部删除
rpoplpush从第一个list的尾部移除元素并添加到第二个list的头部,返回插入的元素
rpoplpush list mylist,将list尾部的元素删除,并且将此元素插入到mylist的头部
lindex返回list中的index位置的元素
lindex list 1,返回list中下标为1的元素,不存在则返回nil
llen返回list的长度
llen mylist
5,set类型,他是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。可以实现sns的好友推荐和blog中的tag功能。
sadd向set中添加元素(若干个),后面接多少个就添加多少个(返回添加的元素个数),返回1表示添加成功,返回0表示添加失败,如果元素中元素已存在,则添加失败
sadd myset ‘hello’ world 1 2 3
smembers,查看集合中的所有元素
smembers myset
srem,删除集合中的一个元素,成功返回1,失败返回0
srem myset hello
spop,从集合中随机弹出(删除)一个元素
spop myset
sdiff,返回两个集合的差集,返回在第一个集合但不在第二个集合中的所有元素
sdiff set myset
sdiffstore,将差集存到一个集合中
sdiffstore set1 set myset,将set和myset的差集存入到set1
sinterstore,将交集存入到一个集合中
sinterstore set1 set myset
sunion 返回集合的并集
sunion set set1
sunionstore,将并集存入到一个集合中
sunioinstore set1 set myset
smove,将第一个集合中的一个元素移除,添加到第二个集合中
smove set set1 hello,将set中的hello元素移动到set1中
scard,返回集合中的元素个数
scard set1
sismember,判断某个元素是否为集合中的一个元素,返回1代表是,返回0代表不是
sismember set1 hello
srandmember,随机返回集合的一个元素,但是不删除元素,和spop不同,spop是随机删除一个元素
srandmember set1
6,sorted sets类型,有序集合,是set的一个升级版本,在set的基础上增加了一个顺序熟悉,zset代表有序集合,可以理解为有两列的mysql表,一列存value,一列存顺序。
zadd向有序集合中添加数据,返回1说明添加成功,返回0说明添加失败,但是会更新顺序
zadd slist 1 hello ,1为顺序,hello为value
zrange,返回集合中的元素,加上withscores会同时返回顺序值
zrange slist 0 -1 withscores
zrem,删除集合中的元素
zrem slist world,删除slist中值为world的元素,其他元素的值和顺序值不变