redis基础命令和数据操作命令学习笔记
基础命令
-
安装成功后,redis的启动命令:先修改配置文件、将服务改成默认运行。然后以配置文件启动服务
redis-server config/redis-conf
-
启动完服务以后就可以以端口6379开启
redis-cli -p 6397
-
设置值
set key value #设置值
-
获得值
get key #获得key对应value
-
清空当前数据库
flushdb
-
清空所有数据库
flushall
-
redis默认有16个数据库 0-15
select (数字) #切换数据库 dbsize #查看数据库大小
-
判断key是否存在
exists #返回0就是不存在,返回1就是存在
-
移动数据
move key db #将当前数据库的键值移动到其他数据库
-
设置过期时间
expire key seconds #设置过期时间 ttl key #查看过期时间
-
查看数据类型
type key
五大数据类型
String
-
追加String
append key "hello" #向key对应的String中追加hello,如果当前字符串不存在,则创建一个。
-
自增和自减
incr key #使key的value增加1 decr key #使key的value减少1 incrby key 10 #使key的value自增10,可以设置步长,指定增量 decrby key 10 #使key的value自减10,可以设置步长,指定减量。
可以用来记录文章的浏览记录
-
截取字符串
getrange key start end #截取字符串长度 getrange key 0 -1 #查看全部字符串。
-
替换字符串
setrange key offset value #将指定位置的字符串替换成设置好的。
-
设置和过期时间同时设置
#setex(set with expire) #设置过期时间 setex key 30 "hello" #设置key30秒后过期 #setnx(set if not exist) #不存在时设置 setnx key "redis" #当key不存在时设置成功,如果key存在则创建失败。
-
批量set和get
# mset 批量设置 # mget 批量获得 mset k1 v1 k2 v2 k3 v3 mget k1 k2 k3 # msetnx 这个命令是具备原子性的 msetnx k1 v1 k4 v4 #其中只要k1或k4存在,剩余那个不存在的也无法创建成功,msetnx具备原子性。
-
getset组合命令
getset key value #如果key不存在,则返回nil并且设置值;如果key存在,先返回值在设置新的值。可以用来更新操作。
list
-
list插入读取命令(所有 list的命令都是由l开头的)
lpush list one #将一个或多个值插入到list中,插入到头部(左边) Rpush list one #将一个或多个值插入到list中,插入到尾部(右边) lrange list 0 -1 #获取list的值 lrange list 0 1 #获取区间的值,从头部开始获取。
-
list移除值
lpop list #移除list的第一个元素,也就是左边的元素。 Rpop list #移除list的最后一个元素,也就是右边的元素。
-
list获取值
lindex list 1 # 通过下标获取list中的值。
-
获取list的长度
llen list #返回当前list的长度
-
移除指定的元素
lrem list 1 one lrem list 2 tow #移除list中指定个数的value
-
截取list中的元素
ltrim list 1 2 #截取指定的元素
-
组合命令
rpoplpush #移除最后一个元素并将其加入到另一个列表中 rpoplpush list1 list2 #将list1最后一个元素移除并将其加入到list2中
-
list更新操作
lset list 0 new #将list中0下标的值更新成new,如果list不存在或list当前下标没有值,这返回失败。
-
list插入
linsert #将一个元素插入到指定元素的前面后后面。 linsert list before/after "word" "other" #将other插入到word的前面或后面
-
小技巧
队(Lpush Rpop)从左边进去,从右边拿出就是一个队列。
栈(Lpush Lpop)从左边进去,从左边拿出就是一个栈。
Set
-
Set存值,取值,判断值是否存在
sadd set "hello" #向set中添加一个值 smembers set #查看set中所有的值 sismember set hello #判断某个值是否在set集合中
-
获取set集合中的元素个数
scard set #获取set中的元素的个数
-
移除set中的元素
srem set hello #移除set中的元素。
-
随机抽取元素
srandmember set #随机抽取一个元素 srandmember set 2 #随机抽取指定个数的元素
-
随机删除一个set元素
spop set #随机删除一个set中元素。
-
将一个set中的值移动到另一个set中
smove set set1 "hellp" #将set中的hello移动到set2中。
-
两个set集合的集合关系
sdiff set1 set2 #输出set1和set2的差集 sinter set1 set2 #输出set1和set2的交集 sunion set1 set2 #输出set1和set2的并集
hash
-
添加hash的值,获取和删除hash值
hset hsah key value #向hash中添加一个键值对 hget hash key value #从hash中获取一个键值对 hmset hash key value key2 value2 #批量添加hash值 hmget hash key key2 #批量获取hash的值 hgetall hash #获取全部键值对 hdel hash key #删除指定hash值
-
查看hash中键值对个数
hlen hash #查看hash中键值对的个数
-
判断hash中某个键值对是否存在
hexists hash key #判断hash中某个键值对是否存在
-
获取hash中所有的key或所有的value
hkeys #获取所有key hvals #获取所有value
Zset
-
添加
zadd zset 1 one #向zset中添加值 zadd zset 2 two 3 there #向zset中添加多个值 zrange 0 -1 #遍历所有
-
排序
zrangebyscore zset -inf +inf #按照scores从小到大排序,只显示值 zrangebyscore zset -inf +inf withscores #按照scores从小到大排序,值和score全都显示。 zrevrange zset 0 -1 #从大到小进行排序
-
移除
zrem zset value #移除指点元素
-
获取zset中的个数
zcard zset #获取zset中的元素个数
-
获取指点区间元素的数量
zcount zset 1 2 #获取指点区间元素的数量
三种特殊类型
geospatial
-
添加城市信息
geoadd china:city shanghai 120.16 30.24 hangzhou #将杭州的坐标添加到geo中。
-
获取城市坐标
geopos china:city hangzhou #获取杭州的坐标。
-
计算两地的距离
geodis china:city beijing hangzhou km #计算北京到杭州的直线距离,最后为单位
-
以给定的经纬度为圆心,找出某一半径内的元素
georadius china:city 100 35 1000 km #以给定的经纬度为圆心,找出某一半径内的元素 georadius china:city 100 35 1000 km withdist #以给定的经纬度为圆心,找出某一半径内的元素,并显示中间距离。 georadius china:city 100 35 1000 km withcoord #以给定的经纬度为圆心,找出某一半径内的元素,并显示定位信息。 georadius china:city 100 35 1000 km withcoord count 1 #以给定的经纬度为圆心,找出某一半径内的元素,并显示定位信息,在筛选出指定用户
-
以给定的城市为圆心,找出某一半径内的元素
georadius china:city beijing 1000 km #以北京圆心,找出某一半径内的元素
-
以hash值返回位置信息
geohash china:city beijing #以hash值返回北京信息。
geo底层是Zset,可以通过Zset进行操作geo。
Hyperloglog
-
命令
pfadd key 1 2 3 4 5 #创建 pfcount key #统计数量 pfmerge key3 key ley2 #将key和key2合并成key3,并去掉重复元素
Bitmaps
-
命令
setbit key 1 0 #按位添加数据 getbit key 1 #查看1位置是否为0 bitcont key #统计
此文章是命令的学习总结,可能会忽视很多命令,也可能会有错误,仅供参考。
事务,Jedis,哨兵模式等后续更新。