## redis

redis

五大数据类型
一、String
redis-server.exe redis.windows.conf

select 0-15 选择数据库

dbsize  查看数据库大小

set name chenmimi
get name

keys * 查看所有的键值对

flushdb
flushall

EXPIRE name 10 设置过期时间

ttl name 查看剩余时间
append key1 "hello"	追加字符串



127.0.0.1:6379> set k1 v1	#设置值
OK
127.0.0.1:6379> get k1		#得到值
"v1"
127.0.0.1:6379> keys *		#展示所有的值
1) "k1"
127.0.0.1:6379> EXISTS k1	#判断是否存在
(integer) 1
127.0.0.1:6379> APPEND k1 "-first"	#后面添加值
(integer) 8
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> get k1
"v1-first"
127.0.0.1:6379>



127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> incr views	#自加1
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views	#自减1
(integer) 1
127.0.0.1:6379> INCRBY views 10	#自定义步长
(integer) 11
127.0.0.1:6379> INCRBY views 10
(integer) 21
127.0.0.1:6379> DECRBY views 10
(integer) 11
127.0.0.1:6379>   


127.0.0.1:6379> set key1 "hello redis"
OK
127.0.0.1:6379> get key1
"hello redis"
127.0.0.1:6379> GETRANGE key1 0 3	#截取字符串
"hell"

127.0.0.1:6379> set k2 "abcdefg"
OK
127.0.0.1:6379> get k2
"abcdefg"
127.0.0.1:6379> SETRANGE k2 2 xxx	#替换
(integer) 7
127.0.0.1:6379> get k2
"abxxxfg"


setex (set with expire)	#设置过期时间
setnx(set if not exist) #不存在设置

127.0.0.1:6379> setex k3 30 "reids"
OK
127.0.0.1:6379> ttl k3
(integer) 21
127.0.0.1:6379> get k3
"reids"
127.0.0.1:6379> setnx mykey "redis"	#不存在创建
(integer) 1
127.0.0.1:6379> keys *
1) "k2"
2) "key1"
3) "mykey"
127.0.0.1:6379> setnx mykey "mongodb"	#判断不存在设置
(integer) 0
127.0.0.1:6379>     

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3	#批量设置
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
3) "k3"
127.0.0.1:6379> mget k1 k2 k3	#批量获取
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v1	#原子操作
(integer) 0
127.0.0.1:6379> get k4
(nil)
127.0.0.1:6379>                                                                                                                   
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 18		#设置对象json
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "18"
127.0.0.1:6379> 

127.0.0.1:6379> getset db redis #获取,之后设置值
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mongdb
"redis"
127.0.0.1:6379> get db
"mongdb"

二、list(链表)
127.0.0.1:6379> lpush list one #将一个值或者多个值放入头部  左边
(integer) 1
127.0.0.1:6379> LPUSH list two
(integer) 2
127.0.0.1:6379> LPUSH list three
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1 #获取多个值
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LRANGE list 0 1
1) "three"
2) "two"
127.0.0.1:6379> RPUSH list right	#将一个值或者多个值放入尾部  右边
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"

127.0.0.1:6379> LPOP list	#移除第一个元素
"three"
127.0.0.1:6379> RPOP list	#移除最后个元素
"right"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"

127.0.0.1:6379> LINDEX list 0	#获取下标值
"two"
127.0.0.1:6379> LLEN list		#获取长度
(integer) 3

127.0.0.1:6379> RPUSH list three
(integer) 4
127.0.0.1:6379> LREM list 1 one	 	#移除指定的值
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "thrree"
2) "two"
3) "three"
127.0.0.1:6379> lrem list 1 three	#移除指定的值
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "thrree"
3) "two"
127.0.0.1:6379> LREM list 2 two		#移除指定的多个 值
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "thrree"

127.0.0.1:6379> RPUSH list "hello"
(integer) 1
127.0.0.1:6379> RPUSH list "redis"
(integer) 2
127.0.0.1:6379> RPUSH list "java"
(integer) 3
127.0.0.1:6379> RPUSH list "Spring"
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "hello"
2) "redis"
3) "java"
4) "Spring"
127.0.0.1:6379> LTRIM list 1 2	#通过下标截取指定的长度
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "redis"
2) "java"

127.0.0.1:6379> LRANGE list 0 -1
1) "redis"
2) "java"
3) "Spring"
4) "mysql"
127.0.0.1:6379> rpoplpush list otherlist		#弹出并加入到新的list当中
"mysql"
127.0.0.1:6379> LRANGE list 0 -1
1) "redis"
2) "java"
3) "Spring"
127.0.0.1:6379> LRANGE otherlist 0 -1
1) "mysql"

127.0.0.1:6379> lset otherlist 0 "SpringBoot"	#将指定下标的值替换成制指定法的值 不存在报错
OK
127.0.0.1:6379> LRANGE otherlist 0 0
1) "SpringBoot"


127.0.0.1:6379> LINSERT otherlist before "SpringBoot" "SpringMVC"	#在某个元素前面插入值
(integer) 2
127.0.0.1:6379> LRANGE otherlist 0 -1
1) "SpringMVC"
2) "SpringBoot"
127.0.0.1:6379> LINSERT otherlist after "SpringBoot" "SpringCloud"	#在某个元素后面插入值
(integer) 3
127.0.0.1:6379> LRANGE otherlist 0 -1
1) "SpringMVC"
2) "SpringBoot"
3) "SpringCloud"
127.0.0.1:6379>
三、set(值不可以重复)
27.0.0.1:6379> sadd set "redis"	#添加元素
(integer) 1
127.0.0.1:6379> sadd set "java"
(integer) 1
127.0.0.1:6379> sadd set "Spring"
(integer) 1
127.0.0.1:6379> SMEMBERS set #查看所有成员,也就是所有的值 member
1) "Spring"
2) "java"
3) "redis"
127.0.0.1:6379> SISMEMBER set "reids"	#查看某个值是否存在
(integer) 0
127.0.0.1:6379> sismember set "redis"	#查看某个值是否存在


127.0.0.1:6379> scard set	#获取元素的个数
(integer) 3
127.0.0.1:6379> sadd set "mysql"	
(integer) 1
127.0.0.1:6379> scard set
(integer) 4
127.0.0.1:6379> sadd set "mysql"	#不可以添加重复的值
(integer) 0


127.0.0.1:6379> srem set "mysql"	#移除元素
(integer) 1
127.0.0.1:6379> scard set
(integer) 3
127.0.0.1:6379> smembers set	#查看set里面的元素
1) "java"
2) "redis"
3) "Spring"

127.0.0.1:6379> SRANDMEMBER set	#随机抽出一个元素
"Spring"
127.0.0.1:6379> SRANDMEMBER set
"java"
127.0.0.1:6379> SRANDMEMBER set
"java"


127.0.0.1:6379> spop set	#随机删除元素
"Spring"
127.0.0.1:6379> spop set
"java"
127.0.0.1:6379> scard set
(integer) 1
127.0.0.1:6379> SMEMBERS set
1) "redis"


127.0.0.1:6379> SMOVE set1 set2 "redis"	#移动到另一个集合
(integer) 1
127.0.0.1:6379> smembers set1
1) "java"
2) "spring"
127.0.0.1:6379> smembers set2
1) "mysql"
2) "redis"
127.0.0.1:6379>

127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key2 b
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> sdiff key1 key2		#差集
1) "a"
2) "c"
127.0.0.1:6379> sinter key1 key2	#交集
1) "b"
127.0.0.1:6379> sunion key1 key2	#并集
1) "d"
2) "a"
3) "b"
4) "c"
四、hash(key-map)
127.0.0.1:6379> hset hash filed1 milearn	#设置一个key-value
(integer) 1
127.0.0.1:6379> hget hash filed1
"milearn"
127.0.0.1:6379> hmset hash filed2 hello filed2 world	#设置多个个key-value,并且覆盖前面的
OK
127.0.0.1:6379> hmget hash filed1 filed2
1) "milearn"
2) "world"

127.0.0.1:6379> hgetall hash #获取全部数据
1) "filed1"
2) "milearn"
3) "filed2"
4) "world"

127.0.0.1:6379> hdel hash filed1	#删除指定的值
(integer) 1
127.0.0.1:6379> hgetall hash
1) "filed2"
2) "world"


127.0.0.1:6379> hmset hash filed1 value1 filed3 value3
OK
127.0.0.1:6379> hgetall hash
1) "filed2"
2) "world"
3) "filed1"
4) "value1"
5) "filed3"
6) "value3"
127.0.0.1:6379> hlen hash	#查询长度
(integer) 3

127.0.0.1:6379> EXISTS hash filed1	#判断是否存在
(integer) 1

127.0.0.1:6379> hkeys hash	#获取key
1) "filed2"
2) "filed1"
3) "filed3"
127.0.0.1:6379> hvals hash	#获取value
1) "world"
2) "value1"
3) "value3"


127.0.0.1:6379> hset hash filed1 5
(integer) 1
127.0.0.1:6379> HINCRBY hash filed1 1
(integer) 6
127.0.0.1:6379> hsetnx hash filed4 hello
(integer) 1
127.0.0.1:6379> hsetnx hash filed4 world
(integer) 0
127.0.0.1:6379>

127.0.0.1:6379> hset user:1 name milearn	#获取值
(integer) 1
127.0.0.1:6379> hget user:1  name
"milearn"
127.0.0.1:6379>
五、Zset(有序集合)
127.0.0.1:6379> zadd myset 1 one	#添加
(integer) 1
127.0.0.1:6379> zadd myset 2 two
(integer) 1
127.0.0.1:6379> zadd myset 3 three 4 four	#多个添加
(integer) 2
127.0.0.1:6379> ZRANGE myset 0 -1	#获取所有
1) "one"
2) "two"
3) "three"
4) "four"

127.0.0.1:6379> ZRANGEBYscore salary -inf +inf	#排序
1) "xiaohong"
2) "zhangsan"
3) "milearn"

127.0.0.1:6379> ZRANGEBYscore salary -inf +inf withscores	#显示出工资
1) "xiaohong"
2) "2500"
3) "zhangsan"
4) "5000"
5) "milearn"
6) "9999"


127.0.0.1:6379> zrem salary xiaohong	#移除元素
(integer) 1
127.0.0.1:6379> ZRANGE salary 0 -1
1) "zhangsan"
2) "milearn"
127.0.0.1:6379>
127.0.0.1:6379> zcard salary	#查看长度
(integer) 2


127.0.0.1:6379> zadd myset 1 hello
(integer) 1
127.0.0.1:6379> zadd myset 2 world 3 redis
(integer) 2
127.0.0.1:6379> zcount myset 1 3
(integer) 3
127.0.0.1:6379> zcount myset 1 2
(integer) 2
127.0.0.1:6379>                                                                                                                          
三大特殊数据
一、geospatial
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing	#添加城市
(integer) 1
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shengzhen
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2


127.0.0.1:6379> geopos china:city beijing	#获取具体的位置的经纬度
1) 1) "116.39999896287918"
   2) "39.900000091670925"
127.0.0.1:6379> geopos china:city chongqing
1) 1) "106.49999767541885"
   2) "29.529999579006592"
   
   
127.0.0.1:6379> geodist china:city beijing shanghai #查看直线距离
"1067378.7564"
127.0.0.1:6379> geodist china:city beijing shanghai km
"1067.3788"
127.0.0.1:6379> geodist china:city beijing chongqing km
"1464.0708"


127.0.0.1:6379>  georadius china:city 110 30 1000 km	#半径内查询附件的人
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"

127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 400 km #找出指定位置的内容
1) "hangzhou"
2) "shanghai"

127.0.0.1:6379> ZRANGE china:city 0 -1	#查看元素
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
二、Hyperloglog(允许容错)
127.0.0.1:6379> PFADD mykey a b c d e f g h i	#添加数据
(integer) 1
127.0.0.1:6379> PFCOUNT mykey	#统计基数数量
(integer) 9
127.0.0.1:6379> pfadd mykey2 a b c d e f g h i h k i u p
(integer) 1
127.0.0.1:6379> PFCOUNT mykey2
(integer) 12
127.0.0.1:6379> PFMERGE mykey3 mykey mykey2 #合并两个到mykey3
OK
127.0.0.1:6379> PFCOUNT mykey3
(integer) 12
三、Bitmaps
#统计信息,活跃不活跃,登录,未登录,打卡等 两个状态的 二进制记录
127.0.0.1:6379> setbit sign 0 1	#记录周一的打卡
(integer) 0
127.0.0.1:6379> setbit sign 2 0
(integer) 0
127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 4 1
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 0
(integer) 0

127.0.0.1:6379> getbit sign 4	#查看是否打卡
(integer) 1

127.0.0.1:6379> BITCOUNT sign	#统计一周的打开记录
(integer) 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值