redis学习笔记

1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。
1,处理超大量的数据
2,运行在便宜的PC服务器集群上,
3,击碎了性能瓶颈。
1)对数据高并发读写。
2)对海量数据的高效率存储和访问。
3)对数据的高扩展性和高可用性。

redis支持的类型:

Sring 类型
set name lijie
get name lijie
set name lichao
get name lichao
覆盖了
setnx设置key对应的值为string类型的value,如果存在不更新,不存在更新
setnx name lijie
返回0。
setex设置key对应的值为String类型的value,并制定有效期
setex haircolor 10 red
get haircolor
red
get haricolor
nil

setrange  设置指定key的value值的子字符串
setrange name 6 gmail.com
返回字符串的长度。

mset 一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值
被设置。

mset key1 lijie key2 braosd key3 sadf
get key1
lijie
get key4
nil

msetnx 一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值
被设置,但是不会覆盖已存在的key。

getset 设置key的值,并返回key的旧值。

getrange 获取key的value值的子字符串。
getrange name 0 5
mget 一次获取多个key的值,如果对应的key不存在则返回nil
mget key1 key2 key3

incr 对key的值做加加操作,并返回新的值
incrby 同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0。

decr
decrby

append

strlen 取指定key的value的长度

hash类型
它是一个String类型的field和value的映射表。它的添加、删除操作都是0(1)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型,将一个对象存储在hash类型
中会占用更少的内存,并且可以更方便的存取整个对象。

hset设置hash field为指定值,如果key不存在,则先创建。
hset myhash field 1 hello

hset user:001 name lijie
hget user:001 name

hincrby
hincrby user:003 age 5

hexists

hlen 返回指定field的数量。

hdel 删除指定hash的field。

hkeys 返回hash的所有field

hvals 返回hash的所有value

hgetall 返回所有的key,value

list类型
它是一个链表结构,主要功能是push,pop、获取一个范围的所有值等等,操作Key理解为链表
的名字。Redis的list类型其实就是一个每个子元素都是String类型的双向链表。我们可以通过
push,pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列

lpush
在key对应list的头部添加字符串元素

lpush mylist "world"
lpush mylist "hello"
lrange mylist 0 -1

rpush 在key对应list的尾部添加字符串元素
linsert 在key对应list的特定位置前或后添加字符串。
linert list3 before one "three"
lset 设置list指定位置下标的元素值

lrem 从key对应list中删除n个和value相同的元素。(n<0从尾部删除,n=0全部删除)
lrem mylist5 1 "hello" 从mylist5中删除一个与hello相同的元素

ltrim 保留指定key的值范围内的数据

lpop 从list的头部删除元素,并返回删除元素。

rpop 从list的尾部删除元素,并返回删除元素。

rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部。

rpoplpush mylist5 mylist6 从mylist5的尾部移除元素添加到mylist6的头部。

lindex 返回名称为key的list中index位置的元素

set类型
set是集合,它是String类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns的好友推荐和blog的tag功能。

sadd 向名称为key的set中添加元素。

sadd myset "hello"
sadd myset "world"

smembers myset 查看集合中的所有成员

srem 删除名称为key的set中的元素。

spop随机返回并删除名称为key的set中的一个元素。

sdiff 返回所有给定key与第一个key的差集。

sdiff myset2 myset3  返回myset2有myset3没有的元素

sdiffstore 返回所有给定key与第一个key的差集,并将结果存为另一个key

sdiffstore myset4 myset2 myset3 意思是将myset2与myset3的差集存在myset4中。

sinter 返回所有给定key的交集。

sinterstore 交集存储在另一个集合里

sunion 返回所有给定key的并集。

sunionstore 返回给定key的并集存储在另一个集合里

smove 从第一个key对应的set中移除member并添加到第二个对应的set中。

smove myset2 myset7 three 将myset2中的three元素移动到myset7中。

sismember 测试member是否是名称为key的set的元素。

sismember myset2 two 判断two元素是否是myset2集合的元素。

srandmember 返回名称为key的set的一个元素,但不删除元素。

sorted set类型
它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后
,zset会自动重新按新的值调整顺序。可以理解为有两列mysql表,一列存value,一列存顺序
。操作中Key裂解为zset的名字。

zadd 向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其
顺序。

zadd myzset 1 "one"

zrange myzset 0 -1 withscores

zrem 删除名称为key的zset中的元素member。

zrem myzset two

zincrby 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment
,否则向该集合中添加该元素,其score的值为increment。

zrank 返回名称为key的zset中member元素的排名,即下标。

你可能感兴趣的:(redis,NoSQL)