基础命令
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
exists key
1.判断当前的key是否存在,如果存在就返回1,反之返回0
2.移动某个键值对到其它数据库
move key 1
3.设置key的过期时间,单位是秒
expire key seconds
4.查看剩余过期时间(当为--2时完全消失)
ttl key
5.查看key值的类型
type key
6.如上图可以推测:默认redis中的数据都是字符串格式
String 字符串类型
1.追加key键的value
append key value
2. 获取字符串的长度
strlen key
3.设置value值自增
incr key
4.设置value自减
decr key
5.通过步长实现自增自减
incrby key value //自增value decrby key value //自减value
6.截取范围字符串[index , end]
getrange key index end
特殊用法:
getrange key 0 -1 //拿取全部的字符串
7.替换指定位置开始为指定字符
setrange key index value
8.setex 设置key过期时间
setex key seconds value
9.setnx:如果不存在key键则创建
setnx key value
10.mset:同时创建多个key-value键值对,同时mget同时获得多个key-value
mset [key value]
mget [key]
11.msetnx:原子操作同时创建多个key -value,要么一起成功,要么一起失败
msetnx key value
12.创建存储对象的方式
13.getset:先拿取源值,后更新值
getset key value
List数据类型
list数据类型的实现方式是通过链表实现的,故而可以将其演变为栈,队列等结构进行使用
所有操作list集合类型的命令都是l开头的,且redis不区分命令大小写
1.lpush 向list中写入值
lpush listName value
//从左边向list集合中写入值
2.lrange 拿取区间值
lrange listName start end
//从start 开始拿取到end结束
从压入数据的情况和弹出数据的情况应该可以确定其实list新增数据是尾插法
3.rpush从右边压入数据
rpush listName value
//从右边开始压入值到list中
4.lindex通过下标获得list中的值
lindex listName number
5.llen获得list的长度
llen listName
6.lrem移除list集合中的数据(多个)
lrem listName count value
7.ltrim截取从start开始长度为length的元素,留下截取后的字符串在list中
ltrim listName start length
8.rpoplpush移除列表中最后的一个元素,将其移动到新的列表
rpoplpush listName newListName
9.exists判断某个列表是否存在
exists listName
10.lset设置某个位置的值为新值
lset listName index value
11.linsert将某个具体的value插入到某个值的前面或后面
linsert listName after/before sourceStr str
- list数据类型实际上是一个链表,可以从left or right进行插入值
- 如果key不存在,创建新的列表
- 如果key存在,新增内容
- 如果移除了所有的值就为空列表,也代表不存在
- 两边插入效率最高,中间插入效率较慢
Set集合
set集合中的数据是不重复的,所有set操作的命令都是s开头
1.sadd往set中添加值
sadd setName value
2.smembers查看set集合中的元素
smembers setName
3.srem移除set集合中的数据
srem setName value
4.scard查看集合的元素大小
scard setName
5.srandmember随机抽出n个元素
srandmember setName number
6.spop 移除一个元素(随机删除,指定删除使用srem)
spop setName
7.smove 将一个值从一个集合移动到另一个集合
smove set1 set2 value
set集合的专有操作:并集(SUNION),交集(SINTER),差集(SDIFF)
Hash(哈希)
Map集合,key--map,这个时候的值是map集合,本质和string类型没什么区别,可以简记为:key--<key,value>
set myhash field maming
有关hash的命令都是h开头
1.hset在hash中写入一个key-map值
hset hashName key value
2.hmset同时设置多个map
hmset hashName [filed value]
3.hgetall获取hash中全部的数据
hgetall hashName
4.hdel删除hash中的指定key字段
5.hlen获取hash中的字段数量
hlen hsahName
6.hexists判断某个字段是否存在
hexists key filed
7.hincr自增
hincr hashName Filed number
8.hsetnx不存在则修改,存在则不修改
hsetnx hashName field value
hash很适合存储用户信息,以及更新用户信息缓存和经常变动的信息,hash都有优势
Zset有序集合
在set 的基础之上又增加了一个值,set k1 v1 =》set k1 score v1
后期可以通过score值进行排序或者权重计算
1.zadd添加一个/多个元素
zadd setName [socre value]
2.zrangebyscore显示zset集合中的元素(-∞,+∞) = (-inf ,+ inf)
zrangebyscore setName start end
3.zrem 移除指定的元素
zrem setName value
4.zcard 获取有序集合的个数
zcard setName
5.zcount获取指定区间的成员数量
zcount setName start end
案例:如果需要有排序操作的数据可以使用zset,带权重的消息或者包含事情的重要程度都可以使用zset