我在我的项目中使用Redis用于缓存目的,我使用Spring进行设置,您可以通过下面提到的链接来了解我在项目中所做的事情。 http://caseyscarborough.com/blog/2014/12/18/caching-data-in-spring-using-redis/
此代码在过去6到8个月的生产环境(Rhel 7-EC2实例)中运行良好。现在突然开始给予" ERR操作不被允许"错误
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Diagnostics;
using Windows.Networking.Proximity;
using Windows.Storage.Streams;
namespace hsProximity
{
public delegate void cbUID([MarshalAs(UnmanagedType.LPWStr)] string AStr);
public delegate void cbState(int AStatus);
[ComVisible(true), Guid("81C99F84-AA95-41A5-868E-62FAC8FAC263"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IHSProximityInterface
{
bool doInitialise(Int32 cbUIDPtr, Int32 cbStatePtr, out String AMessage);
}
[ClassInterface(ClassInterfaceType.None), ComVisible(true)]
public class MainClass : IHSProximityInterface
{
public ProximityDevice proximityDevice;
public List<NdefRecord> recordList;
IntPtr ptr;
cbUID callbackUID;
cbState callbackState;
public bool doInitialise(Int32 cbUIDPtr, Int32 cbStatePtr, out String AMessage)
{
recordList = new List<NdefRecord>();
proximityDevice = ProximityDevice.GetDefault();
ptr = new IntPtr(cbUIDPtr);
callbackUID = (cbUID)Marshal.GetDelegateForFunctionPointer(ptr, typeof(cbUID));
ptr = new IntPtr(cbStatePtr);
callbackState = (cbState)Marshal.GetDelegateForFunctionPointer(ptr, typeof(cbState));
if (proximityDevice != null)
{
proximityDevice.DeviceArrived += ProximityDeviceArrived;
proximityDevice.DeviceDeparted += ProximityDeviceDeparted;
proximityDevice.SubscribeForMessage("NDEF", MessageReceivedHandler);
AMessage = "Proximity device initialized. ID: " + proximityDevice.DeviceId;
return true;
}
else
{
AMessage = "Failed to initialize proximity device.";
return false;
}
}
public void ProximityDeviceArrived(ProximityDevice sender)
{
callbackState(1);
}
public void ProximityDeviceDeparted(ProximityDevice sender)
{
callbackState(0);
}
public void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
{
recordList.Clear();
callbackUID(ParseNDEF(message));
}
}
}
由于这个原因,我们无法从Redis服务器获取数据。因此,我们的申请无法正常运作。
我确实搜索过这个问题,我已经浏览了类似的链接 redis (error) ERR operation not permitted
这表示要检查&#34; requirepass&#34;在redis.conf文件中是否对其进行了评论,但是当我在生产环境中看到redis.conf文件时将其注释掉了。 即使通过它评论我在redis-cli上运行下面提到的命令 &#34; AUTH foobared&#34; 在运行上述命令后,它没有工作。
注意:但是当我们终止正在运行的Redis实例并重新启动它时,它将开始正常工作,然后它不会给出&#34; ERR操作不被允许&#34;错误。
Redis重新启动后,系统再开始工作一到两个小时,然后又出现同样的问题,重新启动Redis服务器后它会再次关闭。
注意:我尝试将Redis服务器从2.6升级到3,即使它没有工作
答案 0 :(得分:0)
你的Redis是否暴露在互联网上?
它可能是CONFIG SET requirepass
攻击。
请参阅this SO question和@antirez评论here