一、数据库连接
直接本机连接:redis-cli
连接虚拟机: redis-cli -h 虚拟机ip地址 -p 6379
二、相关操作
Redis:内存缓存,key/value形式的
1、设置key及value
注意:username这个key没有的话会创建,有的话,就会覆盖。
2、获取key及value
3、incr做自增操作,可以对某个key的value进行+1的操作
4、decr做自减操作,可以对某个key的value进行-1操作
5、incrby指定需要增加的数
6、decrby指定需要减去的数
7、keys *:获取redis里面的所有的key,keys 与* 必须要有空格
三、Mysql表的数据在redis里的存储格式
Mysql数据表使用行和列的组合,以【it_user】表为例。
1、如果需要把上面的mysql里面的表里面的数据存储redis里面,存储的key,需要分如下几步来操作:
2、把上面mysql表里面的记录保存在redis:
It_user是mysql数据库的表名,键名这样写有意义
① 第一条记录的语句如下:id:1 分开两次存储
② 第二条记录的语句如下:
一级一级嵌套
③ 获取用户的信息,例如要获取用户id为1的信息:
四、redis的其它操作
1、扩展keys *命令的使用:
获取以e结尾的键值
2、exists key:测试指定key是否存在,存在返回1,不存在返回0
现在来测试username这个key是否存在:
现在来测试name这个key是否存在:
3、type key返回指定key的value类型
4、删除指定的key:del key1 key2......keyn
5、一次性删除多个key,删除的时候key和key之间使用空格隔开:
6、为key重命名:rename oldkey newkey
7、返回当前数据库的key数量:dbsize
8、(重点)为key指定过期时间,单位是秒:expire key seconds
9、(重点)返回key的剩余过期秒数:ttl key
10、Key过期以后,就会自动的删除该key
11、select index数据库的切换:数据库的编号是从0开始的:0-15
默认是16个数据库:超出了报错了。
12、切换到索引是3的数据库,并查看该数据库的所有key:
默认使用的是索引为0的数据库:
13、将key从当前数据库移动到指定的数据库:move key index
14、删除当前数据库中所有key flushdb
15、删除所有数据库中的所有key flushall
五、string类型的扩展:
1、一次设置多个key的值:
Mset key1 value key2 value......keyn value
2、一次获取多个key的值:mget key1 key2......keyn
3、incr:increament增长
该指令可以对key进行累加1操作,默认是累加1操作,类似i++操作。
该指令可以针对新key或已有key进行操作,新key:创建该key并累加1,其值为1。
已有key:key的信息值类型要求必须为整形的。
新key:创建该key并累加1,其值为1:
4、给指定key的字符串值追加value:append key value
5、对内容进行截取,返回截取过的key的字符串值(下标从0开始)
substr key start end
六、Redis 数据库 list链表类型
(1)list链表类型:相关操作
list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。
这使得list即可以用作栈,也可以用作队列。
上进上出:栈
上进下出:队列
1、lpush向链表的头部放入数据(会依次向右移动)
2、rpush向链表的尾部放入数据(会依次向左移动)
3、lrange获取链表里面的数据(从左往右)
4、lpop在链表的左侧弹出第一个数据 lpop 键名
5、rpop在链表的右侧弹出最后一个数据 rpop 键名
6、llen 键名:返回key对应list的长度,key不存在返回0,如果key对应类型不是list返回错误。
7、ltrim key start end:截取list,保留指定区间内的元素,其它的会删掉(下标是从0开始的)
七、实际的应用:获取最新登录的5个用户
1、选择库,设置一个list链表,其key为newlogin,内部有目前较新的5个用户:
2、又来一个用户,咱们这个列表只能保存5个用户,那该链表每增加一个新元素,就删除一个旧元素: