docker pull redis
docker images -a
docker run -itd --name=myredis redis
docker exec -it myredis hostname -i
docker run -it --rm redis redis-cli -h 172.17.0.4
ping
set name naruto
get name
redis-cli -h 172.17.0.4
redis-benchmark -h 172.17.0.4 -p 6379 -c 100 -n 100000 #redis性能测试
100并发 100000请求
#选择数据库 默认16个 0-16
select 15
#查看当前数据库中的数据大小
DBSIZE
#查看当前数据库中的所有键
keys *
#清除当前数据库中的数据
FLUSHDB
#清除所有数据库中的数据
FLUSHALL
#查看key是否存在
EXISTS name
#在当前数据库中移除name 1代表当前数据库
move name 1
#string类型#######################################################
set name aaa
get name
#设置name的存活时间 此处为10s
EXPIRE name 10
#查看name剩余的存活时间
ttl name
set key1 v1
keys *
get key1
#查看key1的类型
type key1
#在key1后拼接字符串 若key1不存在则创建
APPEND key1 "hello"
#获取key1长度
STRLEN key1
set views 0
#自增1
INCR views
#自减1
DECR views
#自增10,设定步长指定增量
INCRBY views 10
#自减10
DECRBY views 10
FLUSHALL
set key1 "abcdefg"
#截取字符串的0-3个字符
GETRANGE key1 0 3
GETRANGE key1 0 -1
#以value替换字符串偏移为offset的部分
#SETRANGE key1 offset value
SETRANGE key1 1 xx #"axxdefg"
#设置有存活时间的key
#setex key seconds value
setex keys 30 "redis"
#key不存在才设置 存在返回0 设置成功返回1
#setne key value
setne key3 "mongoDB"
FLUSHALL
#一次设置多个值
mset k1 v1 k2 v2 k3 v3
keys *
#一次获得多个值
mget k1 k2 k3
#k4会创建失败 msetnx为原子性操作,要么一起成功,要么一起失败
msetnx k1 v1 k4 v4
#设置对象
set user:1 {name:zhangsan,age:3}
#另一种设置对象的方式
mset user:1:name zhangsan user:1:age 3
FLUSHDB
#先获取再设置 不存在则返回nil 存在返回值并设置值 (nil)
getset db mongodb
getset db redis #(mongodb)
#list类型#######################################################
#从左边插入队列
LPUSH list one
Lpush list two
#从右面插入队列
Rpush list three
#查看队列所有值
Lrange list 0 -1
#按标号查看队列值
Lrange list 0 1
#从左边弹出队列 返回弹出值
Lpop list
#从右面弹出队列 返回弹出值
Rpop list
#按下标获取队列的值
Lindex list 1
#获取队列长度
Llen list
#队列允许重复值的存在
Lpush list three
#移除队列中指定个数的值 精确匹配
Lrem list 2 three
FLUSHdb
rpush list 1
rpush list 2
rpush list 3
rpush list 4
#通过下标截取指定长度的队列 list会被改变 只剩下被截取的元素
ltrim list 1 2
lrange list 0 -1
#从list右侧弹出值并将之插入到newlist中
rpoplpush list newlist
Lrange list 0 -1
lrange newlist 0 -1
#判断列表是否存在
EXISTS list1
lpush list1 rredis
#将已存在的列表的指定下标的元素进行更新
lset list1 0 mongodb
#在指定队列的指定元素之前插入元素before
linsert list1 before "mongodb" "before"
#在指定队列的指定元素之后插入元素after
linsert list1 after mongodb after
#set类型#######################################################
#向集合中添加数据
sadd my set hello world naruto
#查看集合中的数据
smembers myset
#判断元素是否在集合里
sismember myset naruto
#获取集合中的元素个数
scard myset
#移除set中的指定元素
srem myset naruto
smembers myset
#随机选取set中的一个元素
srandmember myset
#随机选取set中的两个元素
srandmember myset 2
#随机删除set中的元素
spop myset
smembers myset
FLUSHDB
sadd myset hello world naruto
sadd myset set2
#将指定元素从myset移动到myset2
smove myset myset2 naruto
FLUSHDB
sadd s1 a b c
sadd s2 c d e
#查找s1与s2的差集 (a b)
sdiff s1 s2
#查找s1与s2的交集 (c)
sinter s1 s2
#返回s1与s2的并集 (a b c d e)
sunion s1 s2
#hash类型#######################################################
#本质上是键值对,它的值也是键值对 key-<key-value>
hset myhash field1 naruto
hget myhash field1
hmset myhash field1 hello field2 world
hmget myhash field1 field2
#获取hash内的全部数据
hgetall myhash
#删除hash中的指定字段 对应的value也没有了
hdel myhash field1
#查看hash中的字段数量
hlen myhash
#判断hash是否存在指定字段
hexists myhash field1
#只获取hash中的所有的字段名称
hkeys myhash
#只获取hash中的所有的字段值
hvals myhash
hset myhash field3 5
#自增
hincrby myhash field3 2
#自减
hdecrby myhash field3 2
#不存在则创建 存在不创建
hsetnx myhash field4 hello
#zset类型#######################################################
zadd myset 1 one
zadd myset 2 two 3 three
zrange myset 0 -1
zadd salary 2500 xiaohong 4000 zhangsan 400 naruto
#按照score升序排列 范围为全集
zrangebyscore salary -inf +inf
#按照score升序排列并显示对应的score 上限2500
zrangebyscore salary -inf 2500 withscores
#按照score降序排列所有元素并显示对应的score
zrevrange salary 0 -1 withscores
#移除有序集合中的指定元素
zrem salary xiaohong
#获取有序集合中的元素个数
zcard salary
#获取socor在指定取件内的成员数量(闭区间)
zcount myset 1 3
#Geospatial类型#######################################################
#Geospatial类型底层为zset zset的所有命令都可以用
#添加经纬度数据 key values(经度 纬度 名称)
geoadd china:city 116.40 39.90 beijing
geoadd china:city 121.47 31.23 shanghai 106.50 29.53 chongqing
geoadd china:city 114.05 22.52 shenzhen 120.16 30.24 hangzhou 108.96 34.26 xian
#获得指定城市的经纬度信息
geopos china:city beijing chognqing
#获得指定城市之间的距离信息 默认单位为m
geodist china:city beijing shanghai
#获得指定城市之间的距离信息 单位为km
geodist china:city beijing shanghai km
#georadius以给定的经纬度为中心查找指定半径内的元素
#查找china:city中以经纬度110 30为中心,半径1000km内的元素
georadius china:city 110 30 1000 km
#同时给出查询结果到中心的距离
georadius china:city 110 30 1000 km withdist
#同时给出查询结果的经纬度
georadius china:city 110 30 1000 km withcoord
#在查询结果中选3个给出 距离由近到远
georadius china:city 110 30 1000 km count 3
#找出以指定元素为中心的1000km内的元素
georadiusbymember china:city beijing 1000 km
#返回指定元素的二维经纬度的hash编码(11位的geohash字符串)
geohash china:city beijing
#查看地图中的所有元素
zrange china:city 0 -1
#移除指定元素
zrem china:city beijign
#Hyperloglog类型#######################################################
#多用于统计不重复元素的数量,占用内存较小,有0.81%的错误率
#向hyperloglog中添加元素
pfadd mykey a b c d e f g h i j
#向hyperloglog中添加元素
pfadd mykey2 a b c d e f l m n
#统计hyperloglog中的不重复元素数量(基数)
pfcount mykey
pfcount mykey2
#合并两个mykey、mykey2到mykey3
pfmerge mykey3 mykey mykey2
pfcount mykey3
#Bitmap类型#######################################################
#多用于存储只有两个状态的对象的属性信息,并且可以统计
#一周的打卡为例
#周一状态为打卡
setbit sign 0 1
#周二状态为未打卡
setbit sign 1 0
setbit sign 2 0
setbit sign 3 1
setbit sign 4 1
setbit sign 5 0
setbit sign 6 0
#获取周四的打卡状态
getbit sign 3
#统计状态为1的天数
bitcount sign
#事务#######################################################
#开启事务
multi
#命令入队
set k1 v1
set k2 v2
get k2
#执行事务
exec
#取消事务
discard
set money 100
set out 0
#监视money变量,事务结束监控自动销毁 相当于乐观锁
watch money
#监视过程中被监视变量发生改变会直接导致事务内容全部失败
multi
incrby money 20
decrby out 20
exec
#事务执行失败监视不会消失 需要手动取消监视后重新监视
#解除单个的检视
unwatch money
#解除全部的监视
unwatch
#发布订阅#######################################################
#订阅一个频道并监听接收频道的消息
subscribe naruto
#向频道发布一个字符串消息
publish naruto "hello, my fans."
#negix?#######################################################
#查看当前库的主从信息
info replication
#选择当前库的主库,当前库变为从库
slaveof 127.0.0.1 6379
#从库变自己为主库
slaveof no one
redis代码
于 2023-09-19 16:52:30 首次发布