Redis
一、初始redis
redies一般有做缓存,在以前我们操作数据是都是从数据库中取,但数据库中的数据是存放在磁盘中,每一次从数据库中取数据时都会涉及到IO操作比较耗时,所以引用了缓存机制
1.1 redis软件
阿里网盘地址:https://www.aliyundrive.com/s/tkuu1vKaoky
软件打开后的页面
redis-cli.exe:是redis的操作程序
redis-server.exe:是redis的客户端
redis.windows.conf ;是redis的配置文件
注意:在使用radis的时候一定要启动redis的客户端
打开客户端的命令:redis-server.exe 全路径名\redis.windows.conf
注意:要在redis安装文件的根目录下执行这个命令
看到这个页面后,就说明redis的客户端已经开启,此时就不要去动它了,直接去执行redis-cli.exe就可以输入redis的相关命令
1.2 redis的数据结构,及相关命令
1.2.1 数据结构
redis存储结构就是key:value,它的key都是字符串类型,value有5中数据类型:
字符串
list 列表类型 有序 重复
set集合 :无序(存取顺序不一致) 不重复
hash 哈希类型
sortedset 有序集合类型 :有序 ,不允许重复
####1.2.2 相关命令
#####String:字符串类型
命令格式: set key:value **get key** **del key** **append key value** **expire key time** **setnx key value
127.0.0.1:6379> set name lisi //向缓存中添加数据 key: name value : list OK 127.0.0.1:6379> get name //从缓存中取数据 get key "lisi" 127.0.0.1:6379> set name wangwu //覆盖缓存中已经存在的数据 OK 127.0.0.1:6379> get name "wangwu" 127.0.0.1:6379> del name//删除 (integer) 1 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> set num 1 OK 127.0.0.1:6379> get num "1" 127.0.0.1:6379> incr num//缓存中key 对应的value自增1 (integer) 2 127.0.0.1:6379> decr num//缓存中key 对应的value自减1 (integer) 1 127.0.0.1:6379> incrby num 3//缓存中key 对应的value自增3 (integer) 4 127.0.0.1:6379> decrby num 3//缓存中key 对应的value自减3 (integer) 1 127.0.0.1:6379> set str hello OK 127.0.0.1:6379> append str world//向key对应的value后追加world (integer) 10 127.0.0.1:6379> strlen str//获取key对应value的长度 (integer) 10 127.0.0.1:6379> mset age 12 address usa score 65//添加多个 OK 127.0.0.1:6379> keys *//查询所有的key 1) "itemId" 2) "age" 3) "address" 4) "json_province" 5) "num" 6) "mylist" 7) "str" 8) "user" 9) "zset" 10) "myset" 11) "score" 127.0.0.1:6379> expire name 30 (integer) 0 127.0.0.1:6379> expire age 30//设置age 的过期时间 为 30s,30s后在age在缓存中就无法获取 (integer) 1 127.0.0.1:6379> get age "12" 127.0.0.1:6379> get age (nil) 127.0.0.1:6379> setnx address china//判断缓存中是否有key,如果存在就无操作,否则就添加 (integer) 0 127.0.0.1:6379>
哈希类型 hash
//命令格式 hset key field value :添加 hget key field:获取 hdel key field:删除 hgetall key:查询所有
127.0.0.1:6379> hset myhash name lisi//添加 (integer) 1 127.0.0.1:6379> hset myhash password 123 (integer) 1 127.0.0.1:6379> hget myhash name//获取 "lisi" 127.0.0.1:6379> hget myhash password "123" 127.0.0.1:6379> hgetall myhash//显示所有 1) "name" 2) "lisi" 3) "password" 4) "123" 127.0.0.1:6379> hdel myhash password (integer) 1 127.0.0.1:6379> hget myhash password (nil) 127.0.0.1:6379> hlen myhash//获取长度 (integer) 1 127.0.0.1:6379> hset user name wuwu (integer) 1 127.0.0.1:6379> hset user age 12 (integer) 0 127.0.0.1:6379> hset user password 321 (integer) 1 127.0.0.1:6379> hgetall user 1) "username" 2) "zhangsan" 3) "age" 4) "12" 5) "address" 6) "CHN" 7) "name" 8) "wuwu" 9) "password" 10) "321" 127.0.0.1:6379> hlen user (integer) 5 127.0.0.1:6379> hkeys user 1) "username" 2) "age" 3) "address" 4) "name" 5) "password" 127.0.0.1:6379> hvals user 1) "zhangsan" 2) "12" 3) "CHN" 4) "wuwu" 5) "321" 127.0.0.1:6379> 127.0.0.1:6379> hincrby user age 2 (integer) 14 127.0.0.1:6379> hget user age "14" 127.0.0.1:6379>
list 列表类型
left:左 right: 右
push 入
pop 出
这个list就好比一个队列:先进先出
lpush key value 从左边入队
lrange key start step :start 0 表示从下标0开始 -1表示步长 -1, 0 -1显示list中所有信息
lpop key 从左边出
同理
rpush
rpop
> 127.0.0.1:6379> lpush list a > (integer) 1 > 127.0.0.1:6379> lpush list b > (integer) 2 > 127.0.0.1:6379> lpush list c > (integer) 3 > 127.0.0.1:6379> lpush list d > (integer) 4 > 127.0.0.1:6379> lrange list 0 -1 > 1) "d" > 2) "c" > 3) "b" > 4) "a" > 127.0.0.1:6379> rpush list a > (integer) 5 > 127.0.0.1:6379> lrange list 0 -1 > 1) "d" > 2) "c" > 3) "b" > 4) "a" > 5) "a" > 127.0.0.1:6379> lpop list > "d" > 127.0.0.1:6379> lrange list 0 -1 > 1) "c" > 2) "b" > 3) "a" > 4) "a" > 127.0.0.1:6379> rpop list > "a" > 127.0.0.1:6379> lrange list 0 -1 > 1) "c" > 2) "b" > 3) "a" > 127.0.0.1:6379> lindex list 2 > "a" > 127.0.0.1:6379> llen list > (integer) 3 > 127.0.0.1:6379> lrem list 1 b > (integer) 1 > 127.0.0.1:6379>
set 集合 不重复,存取无序
sadd key vale :添加
smembers key :显示
srem key value:删除
s1集合 11 12 13 14
s2集合 13 14 15 16 17
sunion s1 s2//两个集合取并集
sdiff s1 s2//取s1的差集
sinter s1 s2//取交集
127.0.0.1:6379> sadd set a (integer) 1 127.0.0.1:6379> sadd set b (integer) 1 127.0.0.1:6379> smembers set 1) "a" 2) "b" 127.0.0.1:6379> sadd set c (integer) 1 127.0.0.1:6379> sadd set d e f (integer) 3 127.0.0.1:6379> smember set (error) ERR unknown command 'smember' 127.0.0.1:6379> smembers set 1) "b" 2) "f" 3) "a" 4) "d" 5) "e" 6) "c" 127.0.0.1:6379> sadd set c (integer) 0 127.0.0