redis 支持 数据永久存储,
五种数据类型
数据模型 key-value
string , list[列表] ,set[集合] ,zset[有续集和] , hash
支持服务器主从模式【集群-高可用】
redis 和 memcache 对比
1.redis 支持数据持久化 , memcache 不支持
2.redis 不但有 sting类型的 key-value ,还有更多的数据存储类型。而memcache 只有 string 类型的 key-value
3.redis 支持 主从集群,memcache 集群很弱,若到基本没人用
redis 和 mongodb 的区别
1.redis 是key-value存储的 ,mongodb是 文档类型存储
2.mongodb 有索引 ,redis 没有
3.mongodb 数据是结构化存储 ,而 redis 只有五大类型存储
4.端口号 不一样 ,mongodb 端口 27017 。 redis 6379
5.mongodb 有用户,和自定义创建库和集合能力 ,而redis 没有
6.mongodb 不支持事物, redis 支持(弱)
共同性:都是高性能的 nosql 数据库 ,数据都永久存储
redis 优势
性能极高 ----读每秒 11万/秒 。 写 8.1万/秒
丰富数据类型 ----redis 支持 sting,list,set,zset,hash 数据类型操作
原子性 ----redis的所有操作都支持原子性,意思就是成功就都执行,失败就都不执行,多个操作支持事物,即原子性(通过MULTI/EXEC包裹使用)
api接口丰富,调用简单(面向对象)
上线时候需要修改redis(其他数据库同理)端口号(安全,别人猜不到)
配置文件修改可以后台操作,因为开启之后终端就会被占用
配置文件修改可访问的ip地址,修改为0.0.0.0 然后可视化工具输入ip地址端口号就可以链接
redis 默认创建16个数据库,从0开始到15(可修改,在配置文件中修改初始数量)
redis指令
Redis对key的操作命令
——————————————————————————————————-
keys(查找key) * 所有
exists (判断key存不存在) key名字
type key(查看key 类型)key 名字
dbsize(查看key的数量)
rename(修改key名字) rename 旧key 新key
set(设置 ) set key value‘添加 key-value’
1.添加有过期时间的key set id 100 ex 3600
2.添加不存在的key ,key set id 100 ex 3600 nx
3.存在就修改,不存在就默认 key set id 100 ex 3600 xx
4.查看指定key剩余时间,ttl key(如果key没有过期时间,返回负值)
expire 设置key 过期时间值 ,单位秒 expire name 10
del 删除一个或多个key , del key1 key2 key3
flushdb 清楚当前数据库数据
select 切换数据库 select N(n是要进的数据库数字)
flushall 清除所有数据库数据
—————————————————————————————————————————
字符串(string)操作命令
set key value [ex 秒数]/[px 毫秒数] [nx]/[xx](用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型
get key(用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误
mset key1 value1 key2 value2 …(一次性设置多个键值
mget key1 key2 key3 …(获取多个key的值
incr key(自增 每次自增1
incrby key step(指定步长的自增 可为负数
decrby key step(指定步长的自减
append key value(把value追加到key的原值上
getset key newValue(设置新值同步返回旧值
——————————————————————————————————————————
列表(list)操作命令
lpush key value(把值插入到列表的头部(左边) 。 从左向右添加
rpop key(从列表右边(尾部)删除元素,并返回删除的元素值 。从右向左弹出列表中数据
llen key(获取列表的长度,返回的是数字
lrange key startIndex endIndex(返回指定区间内的元素,下标从0开始
rpush key value(从尾部添加, 从右向左添加
lpop key(从头部删除元素并返回删除元素值
rpoplpush mylist otherlist(移除列表的最后一个元素,并将该元素添加到另一个列表并返回,从左向右弹出列表中数据
———————————————————————————————————————————
哈希(hash)操作命令
表名:主键字段名:id值 user:id:1 hash的key值
类似于PHP的关联数组。一般用于存储数据库中一条记录值。
hset key field value(把key中 field字段的值设置为 value,如果没有field字段,直接添加,如果有,则覆盖原field字段的值
hmset key field1 value1 field2 value2 …(一次性设置多个
hget key field(获取key中指定field字段的值
hmget key field1 field2 …(一次性获取之个key中field字段的值
hgetall key(返回key中所有字段的值
hdel key field(删除key中指定的field字段
hlen key(返回key中元素的数量
hexists key field(判断key中有没有field字段
hincrby key field step (把key中field字段的值自增长 ,步长可以为负数
hkeys key(返回所有key对应的field字段
hvals key(返回所有key对应field字段对应的值
——————————————————————————————————————————————
集合(set)操作命令
redis的set是无序集合。集合里不允许有重复的元素。
set元素最大可以包含(2的32次方-1)个元素。
场景:存放用户Id,不重复的信息 抽奖,好友关系 脉脉
sadd key value1 value2(向集合key中添加元素
smembers key(返回key集合中所有的元素
scard key(返回key集合中元素的个数
srem key value1(删除key集合中为value1的元素
spop key(随机删除key集合中的1个元素并返回
sismember key value( 判断value是否存在于key集合中
smvoe sSet dSet value(把源集合中的value删除,并添加到目标集合中 【移动】
sinter key1 key2(求出key1,key2两个集合的交集,并返回
sunion key1 key2(求出key1,key2两个集合的并集,并去重,并返回
sdiff key1 key2(求出key1与key2的差集
——————————————————————————————————————————————-
有序集合(zset)操作命令
和set一样有序集合,元素不允许重复,不同的是每个元素都会关联一个分值。
zadd key score(分值) value(给key有序集合中添加元素
zrem key value1(删除key有序集合中指定的元素
zrange key start end [withscores](返回有序集中,指定区间位置内的成员 ,从小到大排列
zrevrange key start end [withscores](返回有序集中,指定区间位置内的成员 ,从大到小排列
zremrangebyscore key min max&#xff08;按照分值来删除元素&#xff0c;删除score在 min<&#61;score<&#61;max之间的
zcard key&#xff08;返回集合元素个数
zcount key minScore maxScore&#xff08;返回min <&#61; score <&#61; max分值区间内元素的数量
zscore key value&#xff08;返回有序集中&#xff0c;成员的分数值
zincrby key score 元素&#xff08;对有序集合中指定成员的分数加上增量 把value的分数&#43;score值
后台挂起启动 redis-server /usr/local/redis-5.0.7/redis.conf
关闭 pkill redis