Redis基础知识

一、什么是Redis

远程字典服务器, Remote dictionary server,⼀个开源的基于内存的数据库,常⽤作键值存储、缓存和消息队列等。Redis通常将全部数据存储在内存中,也可以不时的将数据写⼊硬盘实现持久化,但仅⽤于重新启动后将数据加载回内存。

二、启动Redis服务和Redis客户端链接

1、启动Redis服务代码

redis-server.exe redis.windows.conf

2、打开Redis客户端链接的代码

redis-cli.exe -h 127.0.0.1 -p 6379

3、通过shutdown命令来关闭redis服务

三、Redis操作

1、基本操作

(1) 数据库操作

redis默认有16个数据库,编号为0~15,且默认访问0号数据库。

select 数据库编号 选择指定数据库
dbsize 获取当前数据键值对数量
flushdb 清空当前数据库
flushall 清空所有数据库
save 将数据库保存至磁盘
bgsave

将数据库异步保存至磁盘(后台:Background)

*默认每两秒自动执行一次

lastsave 获取最后一次成功保存的unix秒

(2)通用数据操作

keys格式 查看符合指定格式的key, * 为通配符
exists key1[key2 ...] 查看是否存在一至多个指定的key
type key 按key查看value的数据类型
del key1[key2 ...] 按key删除一至多个键值对
rename key1 key2 重命名key1,如果key2已经存在,其值会被覆盖
renamenx key1 key2 key2不存在时重命名key1
move key 数据库编号 按key将一个键值对移动到指定数据库
copy key1 key2 将key1的值拷贝给key2
get key 打开db库
get key 获取指定 key 的值
set key value 设置指定 key 的值(新增)
del key 设置指定 key 的值(新增)
keys * 显示所有key值

2、字符串String操作

key-value 结构,value 除了字符串还可以是数字(整型、浮点型)

set key value #设置key value
setex key n value #设置 key 和 value 并设置过期时间, n 代表设置的时间(秒)
set key value ex n #设置 key 和 value 并设置过期时间, n 代表设置的时间(秒)
set key value px n #设置 key 和 value 并设置过期时间, n 代表设置的时间(毫秒)
setrange key 0 value #替换某个key 指定位置开始的字符串
setnx key value #判断这个值是否存在,如果存在则不设置值,如果不存在则设置值
mset key value key value key value #设置多个 key value
mget key key key #获取多个 key 的值
msetnx key value name value #设置多个值,如果存在就创建,不存在就不创建,这是原子性操作,要么全部成功要么全部失败

exists key #判断某个 key 是否存在
move key value(目标数据库) #移除当前 key 到某个数据库中
expire key value(时间:单位为S) #设置 key 个值得过期时间
ttl key #查看某个 key 的过期时间
type key #查看这个 key 的类型
append key value #追加某个 key 的值,如果这个 key 不存在,就相当于 set key
strlen key #获取字符串的长度
incr key #当前 key 自增1
decr key #当前 key 自减1
incrby key 10 #当前 key 增加多少
decrby key 5 #当前 key 减少多少
del key #删除某个key
getrange key 0 3 #获取这个 key 从某个下标到某个下标的值
getrange key 0 -1 #获取这个 key 所有的值等同于 get name

set user:1 {name:value,age:value} #设置 JSON 值
mset user:1:key zhangsan user:1:age 13 #设置 JSON 值(需要注意的是 Windows 系统的 Redis 不支持这样操作)
getset key value #先get再set

3、List操作

lpush list value #往一个集合里面进行插值(尾部)
lrange list 0 -1 #获取这个集合所有的值
lrange list 0 2 #获取这个集合0 - 2之间的值
rpush list value #往一个集合里面进行插值(头部)
lpop list #移除列表尾部的值
rpop list #移除列表头部的值
lindex list 1 #根据下标获取list中的值
llen list #获取列表的长度
lrem list 1 value #移除list中指定的值
ltrim list 1 3 #通过下标截取list指定的长度,只保留截取的,剩下的删除

4、Set操作

Set是无序不重复集合。

sadd name value #设置Set集合值
smembers name #读取某个Set的值
sismember name value #判断某个值是否在Set集合中
scard name #获取Set集合中的值个数
srem name value #移除Set集合中的某个数据
srandmember name #从Set集合中随机抽选一个值
spop name #从Set集合中随机删除元素
smove name name2 value #从Set集合中将某个数据移动到另一个Set集合中去
sdiff name name2 #获取两个集合的差集
sinter name name2 #获取两个集合的交集
sunion name name2 #获取两个集合的并集

5、Hash

Map集合,Key-

hset name key value #设置Hash的值
hget name key #获取Hash的值
hmset name key1 value1 key2 value2 #设置多个值
hgetall name #获取Hash中所有的值,以key-value展示
hdel name key #删除Hash中指定的key-value
hlen name #获取Hash中的Key数量
hexists name key #判断Hash中是否存在该Key
hkeys name #获取Hash中所有Key
hvals name #获取Hash中所有value
hincrby name key 1 #使Hash中的某个Key的值自增某个值
hsetnx name key value #判断Hash中是否存在该Key如果不存在则设置,存在则不设置

6、Zset

有序集合,应用于工资表排序,成绩表排序、排行榜、Top N。

zadd name 1 value #设置zset的值,1 表示的是优先级
zadd name 1 value 2 value #设置多个zset的值
zrange name 0 -1 #获取这个zset中的所有值
zrangebyscore name -value +value #排序一个集合,第一个value是最小数,如果   -inf 表示负无穷,+inf 表示正无穷,只显示Key,这是升序
zrangebyscore name -value +value withscore #排序集合并将Key和value显示,这是升序
zrevrange name 0 -1 #降序排列,只显示Key
zrem name key #删除zset集合中的Key和Value
zcard name #获取Zset集合中的个数
zcount name 1 2 #获取set集合中某个区间的值

7、Geospatial

GEO底层是由Zset进行实现的,所有可以使用Zset命令来操作;
地理位置、附近的人、打车距离位置计算;
redis的Geo在redis3.0推出的;

geoadd name 经度 维度 名称 #插入城市的经纬度和名称
geopos name key #获取该城市的经纬度 

geodist name key1 key2 km/m/mi/ft #获取两个位置直接的距离可以是千米、米、英里、英尺

#我附近的人,以给定的经纬度为中心,通过半径查询
georadius name 110(用户自己的经度) 30(用户自己的维度) 1000 km #半径寻找
georadius china:city 110 30 500 km withdist #显示中间的距离
georadius china:city 110 30 500 km withcoord #显示他人的经纬度
georadius china:city 110 30 500 km withdist count 2 #只显示2人

georadiusbymember name key 1000 km #以该元素为中心寻找1000KM内的对象

geohash name key key #将二维的经纬度转换为一维的字符串(11位的字符串),如果两个字符串越接近,那么则距离越近

8、Hyperloglog

数据不能重复;
Reids2.8.9版本推出的;
是用于做基数统计的算法;
优点:占用的内存是固定的;
会有一个0.81%的错误率;

如果允许容错,一定使用Hyperloglog;

pfadd name value value value value value #存储Hyper数据
pfcount name #查看该Hyper的长度
pfmerge name1 name2 name3 #将name2和name3中的数据复制到name1中(不可重复)

9、Bitmap

使用位存储(0 1 0 1 0 1);
统计用户信息:登陆、未登录,活跃、不活跃;(两个状态)

setbit name 3 1 #插入值,第一个数字代表位置,第二个数字代表状态
getbit name 3 #查询值,3代表的是位置
bitcount name #统计1的数字有几个

你可能感兴趣的:(Redis,redis,数据库,缓存)