redis学习
一、nosql数据库的分类
1、kv键值对的数据库
2、文档型数据库(mongodb数据库)
MongoDB是一个基于分布式文件存储的数据库,使用c++编写,主要处理大量的文档。
mongodb是介于关系型数据和非关系型数据库的中间产品,是非关系型数据中功能罪丰富的数据库,最像关系型数据库的。
二、什么是redis
Redis(Remote Dictionary Server ),即远程字典服务,
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
三、redis的命令
(1)redis的数据类型之string
incr 键名 命令是自增1
decr 键名 是自减1
incrby 键名 增加步长
decrby 键名 减少步长
截取字符串
getrange 字段名 起始值,最终值
setex(set with expire) 设置过期时间
setnx(set if not exist) 不存在在设置
setex key值 时间 内容(setex key 30 ''hello'')
mset k1 v1 k2 v2 k3 v3 可以一次设置多个值
mget 键名 可以获得多个值
msetnx 操作如果存在,设置时要么同时成功,要么失败。
mset user:1name niu user:1:age 20
获取mget user:1name user:1:age
getset 键名 值 如果不存在 则返回null 如果存在则先得到值在设置值
(2)redis的数据类型之list
lpush list 值 从左边放入
rpush list 值 从右边放入
lrange list 0 -1 获取所有的值
lpop list 移除左边第一个值
rpop list 移除右边第一个值
lindex list 索引 通过下标获取值
llen list 获取列表的个数
lrem list 1 值 移除一个列表中的值
ltrim list 1 3 截取列表中的值
rpoplpush 列表 另一个列表 移除最后一个元素到另一个列表中
exists 列表 判断是否存在列表
lset list 0 item 将列表中指定的下标元素替换为设置的值
linsert 列表 before|after 列表值名 插入的值 在列表中在某个特定的列表名中插入指定的值
(3)redis的数据类型之set
sadd myset 值 添加元素
smembers myset 查看所有的值
sismember myset 元素值 查看元素是否存在set集合中
scard myset 获取set集合中的元素的个数
srem myset 元素值 移除set集合中的元素
srandmember myset 随机获取一个值
spop myset 随机删除set集合中的一个值
smove myset myset2 元素值 把一个元素中的指定值移除到另一个set集合
sdiff 集合1 集合2 查看两个集合中的差集
sinter 集合1 集合2 查看两个集合中的交集
sunion 集合1 集合2 查看两个集合中的并集
(4)redis中数据类型之hash
map集合 其实是key-map 值是map集合
hset myhash field niu 设置一个具体的key-value 值
hset myhash field1 niu field2 niu2 设置多个的key-value 的值
hget myhash field1 field2 获取设置的值
hgetall myhash 获取集合中所有的键值对的值
hlen myhash 获取hash表中的字段数量
hexists myhash 字段名 判断hash表中是否存在字段名
hkeys myhash 获取所有的字段
hvals myhash 获取所有的values
(5) redis中的数据类型之zset
zadd 集合名字 序号 值
zrangebyscore 集合名字 -INF +INF 显示所有的用户 从小到大
zrevrange 集合名字 0 -1 从大到小进行排序
zrem 集合名字 字段名 移除 集合中的字段
zcard 集合名字 获取集合中字段的个数