一、安装和坑排除
1、启动服务端
redis-server /myredis/redis7.conf
2、启动客户端
redis-cli -a yjy219912ym -p 6379 //-a 后面接的是密码
3、查看redis进程
ps -ef|grep redis
4、测试是否可以正常使用
5、redis端口号默认是6379
6、helloworld
7、关闭
1、客户端
quit
2、服务端
8、卸载
二、Redis十大数据类型
1、String
2、List
3、Hash
4、set
5、Zset
6、redis地理空间GEO
7、redis基数统计HyperLogLog
8、redis位图bitmap
9、redis位域bitfield
10、redis流stream
三、十大数据类型详解
keys * //当前库的所有key exists key //判断某个key是否存在 type key //查看你的key是什么类型 del key //删除指定的key数据 unlink key //非阻塞删除,仅仅将keys从keyspace元数据中删除,没真正的删除会在后续异步中操作 ttl key // 查看还有多少秒过期 -1表示永不过期 -2 表示已过期 expire key 秒 // 给key设置过期时间 move key dbindex [0-15] // 将当前数据库的key移动到指定的数据库中 redis默认是有16个数据库的 select dbindex [0-15] // 切换数据库[0-15],默认为0 dbsize // 查看当前数据库key的数量 flushdb // 清空当前库 flushall // 清空16个数据库 慎用
命令不区分大小写,而key的值是区分大小写的
help @+数据类型 会出现命令提示 比如 help @string
1、String
string是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
set key value ex 20 // 设置值 20秒过期 get key // 获得对应的值
同时设置/获取多个键值
MSET [key1] [value1] [key2] [value2] [key3] [value3] // 同时设置一个或多个键值对 MGET [key1] [key2] [key3] // 同时获取多个key的值 MSETNX [key1] [value1] [key2] [value2] // 同时设置一个或多个 key-value 对 必须保证key都不存在才能成功
获取指定区间
GETRANGE [key] 0 -1 // 获取这个key的值的全部 GETRANGE [key] 0 2 // 获取这个key的值索引0到索引2之间的值 SETRANGE [key] 1 xxx // 设置指定区间范围内的值
获取字符串长度和内容相加
STRLEN [key] // 获取key对应的值的长度 APPEND [key] [vale] // 添加字符串内容
分布式锁
setex [key] [过期时间] [value] // 设置带过期时间的key,动态设置 setex [key] [value] // 只有在 key 不存在时设置 key 的值。 getset(先get再set) getset [key] [value] // 给定 key 的值设为 value ,并返回 key 的旧值
2、list
lpush [key] [value] ... // 往 列表头部(左边)放入元素 Rpush [key] [value] ... // 往 列表(右边)放入元素 lrange [key] 0 -1 // 从左边开始遍历列表 只能从左边遍历 lpop [key] // 最左边的出栈 也就是lrange遍历的第一个 rpop [key] // 最右边的出栈 也就是lrange遍历的最后一个 lindex [key] [index] // 通过索引值获取值 llen [key] // 获得元素个数 lrem [key] [num] [value] // 从左往右删除 num个值为 value的值 lrem [key] 0 [value] // 从左往右删除所有值为value的值 ltrim [key] [开始] [结束] // 截取指定范围的值后再赋给[key],也就是删除这个区间外的值 RPOPLPUSH [key1] [key2] //移除列表的最后一个元素,并将该元素添加到另一个列表的第一个并返回 lset [key] [index] [value] //将key的第 index 个索引值改为value linsert [key] before/after [value1] [value2] // 在list某个已有值的前后再添加具体值
3、hash
相当于Map<String,Map<Object,Object>
hlen // 获取在某个key内的全部数量 hexists [key] [k1] // 看key中是否有k1这个键 hkeys [key] // 获取key里面的所有key hvals [key] // 获取key里面的所有value hincrby [key] k1 [num] // key里面k1的值增长num 整数 hincrbyfloat [key] k1 [num] // key里面k1的值增长num 小数 hsetnx [key] k1 [value] // 不存在赋值,存在了无效\
应用场景
早期购物车设计,基本不用了,中小厂可用
4、set
单值多value,无重复
常用的
SADD key member ... // 添加元素 SMEMBERS key // 遍历集合中所有元素 SISMEMBER key member // 判断元素是否在集合中 SREM key member ... // 删除元素 SCARD key // 获取集合长度 SRANDMEMBER key m // 从set集合里面随机取出m个 如果超过最大数量就全部取出 如果写的值是负数,比如-3 ,表示需要取出3个,但是可能会有重复值 不会删除 SPOP key m // 从集合中随即弹出一个元素 出一个删一个 SMOVE key1 key2 在key1里已存在的某个值 // 将key1的已存在的某个值赋给key2
集合运算
SDIFF keyA keyB // A - B 属于A但不属于B的元素构成的集合 SUNION keyA keyB // A U B 属于A或者属于B的元素合并后的 SINTER keyA keyB // A ∩ B 属于A同时属于B SINTERCARD numkeys keyA keyB [LIMIT limit] // 不返回结果集,只返回结果的基数
5、Zset
注意:Zset和set的区别,就是在set的基础上加了一个score分数值。
- set k1 v1 v2 v3
- Zset k1 score1 v1 score2 v2
常用的
ZADD key score member [ score member ] // 添加元素 ZRANGE key start stop [WITHSCORES] // 返回元素分数从小到大的顺序 返回索引从start到stop之间的所有元素 ZREVRANGE key 0 - 1 [WITHSCORES] // 反序 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] // 获取指定分数范围的元素 (min,max) 不包含 limit是返回限制,返回多少个 ZSCORE key member // 获取元素的分数 ZCARD key // 获取集合中元素的数量 ZREM key 某score下对应的value值 // 删除元素 ZINCRBY key increment member // 增加某个元素的分数 ZCOUNT key min max // 获得指定分数范围内的元素个数 ZRANK key values值 // 获得下标值 ZREVRANK key values // 逆序获得下标值、
ZMPOP numkeys key [key …] <MIN | MAX> [COUNT count]
- 弹出元素 会删除
- numkeys 表示几个key
- <MIN | MAX> 小 | 大
- [COUNT count] count num 弹出num个